base64加密

淮上ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
將文件進(jìn)行加密
將文件進(jìn)行解密
利用終端命令進(jìn)行base64運(yùn)算
POST加密
A. 搭建UI框架
B. 實(shí)現(xiàn)基本加密
抽取出讀取數(shù)據(jù)的方法
抽取出存儲(chǔ)數(shù)據(jù)的方法
在點(diǎn)擊事件中進(jìn)行登錄操作
POST加密
C. 實(shí)現(xiàn)頁(yè)面間跳轉(zhuǎn)
在AppDelegate.m文件中利用通知設(shè)置頁(yè)面的跳轉(zhuǎn)切換的主方法
登錄成功
注銷成功
在Main.storyboard關(guān)聯(lián)的控制器中設(shè)置注銷按鈕的點(diǎn)擊事件
MD5加密--(信息-摘要算法) 哈希算法之一
基本介紹
利用 MD5 對(duì)字符串進(jìn)行加密
加鹽:可以保證 MD5加密之后更加安全
時(shí)間戳密碼
基本介紹
獲取MD5 首次加密的密碼
加密過(guò)程
訪問(wèn) loginhmac.php 接口,發(fā)送請(qǐng)求,創(chuàng)建請(qǐng)求
發(fā)送請(qǐng)求
基本介紹
簡(jiǎn)單使用
從鑰匙串加載密碼
導(dǎo)入框架
獲得當(dāng)前系統(tǒng)版本號(hào)
實(shí)例化指紋識(shí)別對(duì)象,判斷當(dāng)前設(shè)備是否支持指紋識(shí)別功能(是否帶有TouchID)
指紋登陸(默認(rèn)是異步方法)
以上就是全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家的支持。
開發(fā)中常見(jiàn)的加密方式及應(yīng)用
一、base64
簡(jiǎn)述:Base64是網(wǎng)絡(luò)上最常見(jiàn)的用于傳輸8Bit 字節(jié)碼 的編碼方式之一,Base64就是一種基于64個(gè)可打印字符來(lái)表示二進(jìn)制數(shù)據(jù)的方法。所有的數(shù)據(jù)都能被編碼為并只用65個(gè)字符就能表示的文本文件。( 65字符:A~Z a~z 0~9 + / = )編碼后的數(shù)據(jù)~=編碼前數(shù)據(jù)的4/3,會(huì)大1/3左右(圖片轉(zhuǎn)化為base64格式會(huì)比原圖大一些)。
應(yīng)用:Base64編碼是從二進(jìn)制到字符的過(guò)程,可用于在 HTTP 環(huán)境下傳遞較長(zhǎng)的標(biāo)識(shí)信息。例如,在Java Persistence系統(tǒng)Hibernate中,就采用了Base64來(lái)將一個(gè)較長(zhǎng)的唯一 標(biāo)識(shí)符 (一般為128-bit的UUID)編碼為一個(gè)字符串,用作HTTP 表單 和HTTP GET URL中的參數(shù)。在其他應(yīng)用程序中,也常常需要把二進(jìn)制 數(shù)據(jù)編碼 為適合放在URL(包括隱藏 表單域 )中的形式。此時(shí),采用Base64編碼具有不可讀性,需要解碼后才能閱讀。
命令行進(jìn)行Base64編碼和解碼
編碼:base64 123.png -o 123.txt
解碼:base64 123.txt -o test.png -D Base64編碼的原理
原理:
1)將所有字符轉(zhuǎn)化為ASCII碼;
2)將ASCII碼轉(zhuǎn)化為8位二進(jìn)制;
3)將二進(jìn)制3個(gè)歸成一組(不足3個(gè)在后邊補(bǔ)0)共24位,再拆分成4組,每組6位;
4)統(tǒng)一在6位二進(jìn)制前補(bǔ)兩個(gè)0湊足8位;
5)將補(bǔ)0后的二進(jìn)制轉(zhuǎn)為十進(jìn)制;
6)從Base64編碼表獲取十進(jìn)制對(duì)應(yīng)的Base64編碼;
Base64編碼的說(shuō)明:
a.轉(zhuǎn)換的時(shí)候,將三個(gè)byte的數(shù)據(jù),先后放入一個(gè)24bit的緩沖區(qū)中,先來(lái)的byte占高位。
b.數(shù)據(jù)不足3byte的話,于緩沖區(qū)中剩下的bit用0補(bǔ)足。然后,每次取出6個(gè)bit,按照其值選擇查表選擇對(duì)應(yīng)的字符作為編碼后的輸出。
c.不斷進(jìn)行,直到全部輸入數(shù)據(jù)轉(zhuǎn)換完成。
d.如果最后剩下兩個(gè)輸入數(shù)據(jù),在編碼結(jié)果后加1個(gè)“=”;
e.如果最后剩下一個(gè)輸入數(shù)據(jù),編碼結(jié)果后加2個(gè)“=”;
f.如果沒(méi)有剩下任何數(shù)據(jù),就什么都不要加,這樣才可以保證資料還原的正確性。
二、HASH加密/單向散列函數(shù)
簡(jiǎn)述:Hash算法特別的地方在于它是一種單向算法,用戶可以通過(guò)Hash算法對(duì)目標(biāo)信息生成一段特定長(zhǎng)度(32個(gè)字符)的唯一的Hash值,卻不能通過(guò)這個(gè)Hash值重新獲得目標(biāo)信息。對(duì)用相同數(shù)據(jù),加密之后的密文相同。 常見(jiàn)的Hash算法有MD5和SHA。由于加密結(jié)果固定,所以基本上原始的哈希加密已經(jīng)不再安全,于是衍生出了加鹽的方式。加鹽:先對(duì)原始數(shù)據(jù)拼接固定的字符串再進(jìn)行MD5加密。
特點(diǎn):
1) 加密 后密文的長(zhǎng)度是定長(zhǎng)(32個(gè)字符的密文)的
2)如果明文不一樣,那么散列后的結(jié)果一定不一樣
3)如果明文一樣,那么加密后的密文一定一樣(對(duì)相同數(shù)據(jù)加密,加密后的密文一樣)
4)所有的加密算法是公開的
5)不可以逆推反算(不能根據(jù)密文推算出明文),但是可以暴力 破解 ,碰撞監(jiān)測(cè)
原理:MD5消息摘要算法,屬Hash算法一類。MD5算法對(duì)輸入任意長(zhǎng)度的消息進(jìn)行運(yùn)行,產(chǎn)生一個(gè)128位的消息摘要。
1)數(shù)據(jù)填充
對(duì)消息進(jìn)行數(shù)據(jù)填充,使消息的長(zhǎng)度對(duì)512取模得448,設(shè)消息長(zhǎng)度為X,即滿足X mod 512=448。根據(jù)此公式得出需要填充的數(shù)據(jù)長(zhǎng)度。
填充方法:在消息后面進(jìn)行填充,填充第一位為1,其余為0。
2)添加信息長(zhǎng)度
在第一步結(jié)果之后再填充上原消息的長(zhǎng)度,可用來(lái)進(jìn)行的存儲(chǔ)長(zhǎng)度為64位。如果消息長(zhǎng)度大于264,則只使用其低64位的值,即(消息長(zhǎng)度 對(duì)264取模)。
在此步驟進(jìn)行完畢后,最終消息長(zhǎng)度就是512的整數(shù)倍。
3)數(shù)據(jù)處理
準(zhǔn)備需要用到的數(shù)據(jù):
4個(gè)常數(shù):A = 0x67452301, B = 0x0EFCDAB89, C = 0x98BADCFE, D = 0x10325476;
4個(gè)函數(shù):F(X,Y,Z)=(X Y) | ((~X) Z);G(X,Y,Z)=(X Z) | (Y (~Z));H(X,Y,Z)=X ^ Y ^ Z;I(X,Y,Z)=Y ^ (X | (~Z));
把消息分以512位為一分組進(jìn)行處理,每一個(gè)分組進(jìn)行4輪變換,以上面所說(shuō)4個(gè)常數(shù)為起始變量進(jìn)行計(jì)算,重新輸出4個(gè)變量,以這4個(gè)變量再進(jìn)行下一分組的運(yùn)算,如果已經(jīng)是最后一個(gè)分組,則這4個(gè)變量為最后的結(jié)果,即MD5值。
三、對(duì)稱加密
經(jīng)典算法:
1)DES數(shù)據(jù)加密標(biāo)準(zhǔn)
DES算法的入口參數(shù)有三個(gè):Key、Data、Mode。其中Key為8個(gè)字節(jié)共64位,是DES算法的工作密鑰;Data也為8個(gè)字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或解密。
DES算法是這樣工作的:如Mode為加密,則用Key去把數(shù)據(jù)Data進(jìn)行加密, 生成Data的密碼形式(64位)作為DES的輸出結(jié)果;如Mode為解密,則用Key去把密碼形式的數(shù)據(jù)Data解密,還原為Data的明碼形式(64位)作為DES的輸出結(jié)果。在通信網(wǎng)絡(luò)的兩端,雙方約定一致的Key,在通信的源點(diǎn)用Key對(duì)核心數(shù)據(jù)進(jìn)行DES加密,然后以密碼形式在公共通信網(wǎng)(如電話網(wǎng))中傳輸?shù)酵ㄐ啪W(wǎng)絡(luò)的終點(diǎn),數(shù)據(jù)到達(dá)目的地后,用同樣的Key對(duì)密碼數(shù)據(jù)進(jìn)行解密,便再現(xiàn)了明碼形式的核心數(shù)據(jù)。這樣,便保證了核心數(shù)據(jù)(如PIN、MAC等)在公共通信網(wǎng)中傳輸?shù)陌踩院涂煽啃浴?/p>
2)3DES使用3個(gè)密鑰,對(duì)消息進(jìn)行(密鑰1·加密)+(密鑰2·解密)+(密鑰3·加密)
3)AES高級(jí)加密標(biāo)準(zhǔn)
如圖,加密/解密使用相同的密碼,并且是可逆的
四、非對(duì)稱加密
特點(diǎn):
1)使用公鑰加密,使用私鑰解密
2)公鑰是公開的,私鑰保密
3)加密處理安全,但是性能極差
經(jīng)典算法RSA:
1)RSA原理
(1)求N,準(zhǔn)備兩個(gè)質(zhì)數(shù)p和q,N = p x q
(2)求L,L是p-1和q-1的最小公倍數(shù)。L = lcm(p-1,q-1)
(3)求E,E和L的最大公約數(shù)為1(E和L互質(zhì))
(4)求D,E x D mode L = 1
五、數(shù)字簽名
原理以及應(yīng)用場(chǎng)景:
1)數(shù)字簽名的應(yīng)用場(chǎng)景
需要嚴(yán)格驗(yàn)證發(fā)送方身份信息情況
2)數(shù)字簽名原理
(1)客戶端處理
對(duì)"消息"進(jìn)行HASH得到"消息摘要"
發(fā)送方使用自己的私鑰對(duì)"消息摘要"加密(數(shù)字簽名)
把數(shù)字簽名附著在"報(bào)文"的末尾一起發(fā)送給接收方
(2)服務(wù)端處理
對(duì)"消息" HASH得到"報(bào)文摘要"
使用公鑰對(duì)"數(shù)字簽名"解密
對(duì)結(jié)果進(jìn)行匹配
六、數(shù)字證書
簡(jiǎn)單說(shuō)明:
證書和駕照很相似,里面記有姓名、組織、地址等個(gè)人信息,以及屬于此人的公鑰,并有認(rèn)證機(jī)構(gòu)施加數(shù)字簽名,只要看到公鑰證書,我們就可以知道認(rèn)證機(jī)構(gòu)認(rèn)證該公鑰的確屬于此人。
數(shù)字證書的內(nèi)容:
1)公鑰
2)認(rèn)證機(jī)構(gòu)的數(shù)字簽名
證書的生成步驟:
1)生成私鑰openssl genrsa -out private.pem 1024
2)創(chuàng)建證書請(qǐng)求openssl req -new -key private.pem -out rsacert.csr
3)生成證書并簽名,有效期10年openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
4)將PEM格式文件轉(zhuǎn)換成DER格式openssl x509 -outform der -in rsacert.crt -out rsacert.der
5)導(dǎo)出P12文件openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
iOS開發(fā)中的注意點(diǎn):
1)在iOS開發(fā)中,不能直接使用PEM格式的證書,因?yàn)槠鋬?nèi)部進(jìn)行了Base64編碼,應(yīng)該使用的是DER的證書,是二進(jìn)制格式的;
2)OpenSSL默認(rèn)生成的都是PEM格式的證書。
七、https
HTTPS和HTTP的區(qū)別:
超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息。HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的數(shù)據(jù)加密,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文,就可以直接讀懂其中的信息,因此HTTP協(xié)議不適合傳輸一些敏感信息,比如信用卡號(hào)、密碼等。
為了解決HTTP協(xié)議的這一缺陷,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS。為了數(shù)據(jù)傳輸?shù)陌踩琀TTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議,SSL依靠證書來(lái)驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密。
HTTPS和HTTP的區(qū)別主要為以下四點(diǎn):
1)https協(xié)議需要到ca申請(qǐng)證書,一般免費(fèi)證書很少,需要交費(fèi)。
2)http是 超文本傳輸協(xié)議 ,信息是明文傳輸,https則是具有 安全性 的 ssl 加密傳輸協(xié)議。
3)http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4)http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的 網(wǎng)絡(luò)協(xié)議 ,比http協(xié)議安全。
5)SSL:Secure Sockets Layer安全套接字層;用數(shù)據(jù)加密(Encryption)技術(shù),可確保數(shù)據(jù)在網(wǎng)絡(luò)上傳輸過(guò)程中不會(huì)被截取及竊聽。目前一般通用之規(guī)格為40 bit之安全標(biāo)準(zhǔn),美國(guó)則已推出128 bit之更高安全標(biāo)準(zhǔn),但限制出境。只要3.0版本以上之I.E.或Netscape 瀏覽器 即可支持SSL。目前版本為3.0。SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。
在開發(fā)中經(jīng)常會(huì)遇到數(shù)據(jù)的加密,常見(jiàn)的有base64、DES、AES、RSA等,由于AES的用法相對(duì)簡(jiǎn)單一些,在公司的項(xiàng)目中,我們使用的是AES加密。但是遇到一個(gè)大坑就是后臺(tái)使用了AES的128/CBC/NoPadding加密模式,很可悲的是iOS中只有PKCS7Padding和PKCS5Padding這兩種模式,沒(méi)有NoPadding模式。經(jīng)過(guò)各種百度、谷歌后,終于發(fā)現(xiàn)了一篇文章解決了這個(gè)問(wèn)題。
下面是參考文章的鏈接 :
問(wèn)題就處在No Padding. No Pading的情況下,一定要對(duì)加密數(shù)據(jù)不是kCCKeySizeAES128倍數(shù)部分進(jìn)行0x0000的填充,不然加密長(zhǎng)度不正確,一般情況下選擇使用kCCOptionPKCS7Padding(也就是0x0001)進(jìn)行填充,但是我們是No Padding所以要用 0x0000 填充。
對(duì)ios應(yīng)用加固有兩種實(shí)現(xiàn)方式。
一種使用安全編譯器
基于LLVM編譯器中間層實(shí)現(xiàn)。基于 LLVM 的保護(hù)方案,在使用時(shí)需要更換已有的編譯環(huán)境,替換編譯器,調(diào)整編譯選項(xiàng)等,對(duì)開發(fā)環(huán)境造成了很多影響,易用性差。從保護(hù)效果上看,基于 LLVM 的保護(hù)方案,受限于編譯器框架,生成的代碼只能做邏輯上的混淆變換,仍然可以被反編譯,對(duì)控制流的混淆效果有限,且邊界清晰,更容易被分析。
反編譯效果
OLLVM 保護(hù)后反編譯效果:
一種使用VirboxProtector 虛擬化保護(hù)。
ARM 虛擬化是 Virbox Protector 針對(duì) ARM 架構(gòu)的指令推出的虛擬機(jī)保護(hù)方式,通過(guò)將原始的 ARM 指令進(jìn)行翻譯,轉(zhuǎn)換為自定義的虛擬機(jī)指令,運(yùn)行時(shí)在自定義虛擬機(jī)執(zhí)行。Virbox Protector 實(shí)現(xiàn)了針對(duì) ARM 指令的虛擬機(jī)保護(hù)工具,支持對(duì)armv7(包括 thumb, thumb2),及 armv8 以上指令集進(jìn)行翻譯,安全強(qiáng)度高,適用于需要高安全性的代碼保護(hù)需求。通過(guò)虛擬化保護(hù)后的代碼無(wú)法被反編譯。
Virbox Protector 保護(hù)后反編譯效果:
網(wǎng)站欄目:ios開發(fā)加密方式,ios數(shù)據(jù)加密的幾種方式
文章來(lái)源:http://chinadenli.net/article19/dsippgh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站制作、定制網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)