开发中常见的加密方式及应用

开发中常见的加密方式及应用

一、base64

简述:Base64是网络上最常见的用于传输8Bit 字节码 的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。所有的数据都能被编码为并只用65个字符就能表示的文本文件。( 65字符:A~Z a~z 0~9 + / = )编码后的数据~=编码前数据的4/3,会大1/3左右(图片转化为base64格式会比原图大一些)。

应用:Base64编码是从二进制到字符的过程,可用于在 HTTP 环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一 标识符 (一般为128-bit的UUID)编码为一个字符串,用作HTTP 表单 和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制 数据编码 为适合放在URL(包括隐藏 表单域 )中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。

命令行进行Base64编码和解码

编码:base64 123.png -o 123.txt

解码:base64 123.txt -o test.png -D Base64编码的原理

原理:

1)将所有字符转化为ASCII码;

2)将ASCII码转化为8位二进制;

3)将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;

4)统一在6位二进制前补两个0凑足8位;

5)将补0后的二进制转为十进制;

6)从Base64编码表获取十进制对应的Base64编码;

Base64编码的说明:

a.转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。

b.数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。

c.不断进行,直到全部输入数据转换完成。

d.如果最后剩下两个输入数据,在编码结果后加1个“=”;

e.如果最后剩下一个输入数据,编码结果后加2个“=”;

f.如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。

二、HASH加密/单向散列函数

简述:Hash算法特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度(32个字符)的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。对用相同数据,加密之后的密文相同。 常见的Hash算法有MD5和SHA。由于加密结果固定,所以基本上原始的哈希加密已经不再安全,于是衍生出了加盐的方式。加盐:先对原始数据拼接固定的字符串再进行MD5加密。

特点:

1) 加密 后密文的长度是定长(32个字符的密文)的

2)如果明文不一样,那么散列后的结果一定不一样

3)如果明文一样,那么加密后的密文一定一样(对相同数据加密,加密后的密文一样)

4)所有的加密算法是公开的

5)不可以逆推反算(不能根据密文推算出明文),但是可以暴力 破解 ,碰撞监测

原理:MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要。

1)数据填充

对消息进行数据填充,使消息的长度对512取模得448,设消息长度为X,即满足X mod 512=448。根据此公式得出需要填充的数据长度。

填充方法:在消息后面进行填充,填充第一位为1,其余为0。

2)添加信息长度

在第一步结果之后再填充上原消息的长度,可用来进行的存储长度为64位。如果消息长度大于264,则只使用其低64位的值,即(消息长度 对264取模)。

在此步骤进行完毕后,最终消息长度就是512的整数倍。

3)数据处理

准备需要用到的数据:

4个常数:A = 0x67452301, B = 0x0EFCDAB89, C = 0x98BADCFE, D = 0x10325476;

4个函数: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位为一分组进行处理,每一个分组进行4轮变换,以上面所说4个常数为起始变量进行计算,重新输出4个变量,以这4个变量再进行下一分组的运算,如果已经是最后一个分组,则这4个变量为最后的结果,即MD5值。

三、对称加密

经典算法:

1)DES数据加密标准

DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

DES算法是这样工作的:如Mode为加密,则用Key去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。

2)3DES使用3个密钥,对消息进行(密钥1·加密)+(密钥2·解密)+(密钥3·加密)

3)AES高级加密标准

如图,加密/解密使用相同的密码,并且是可逆的

四、非对称加密

特点:

1)使用公钥加密,使用私钥解密

2)公钥是公开的,私钥保密

3)加密处理安全,但是性能极差

经典算法RSA:

1)RSA原理

(1)求N,准备两个质数p和q,N = p x q

(2)求L,L是p-1和q-1的最小公倍数。L = lcm(p-1,q-1)

(3)求E,E和L的最大公约数为1(E和L互质)

(4)求D,E x D mode L = 1

五、数字签名

原理以及应用场景:

1)数字签名的应用场景

需要严格验证发送方身份信息情况

2)数字签名原理

(1)客户端处理

对"消息"进行HASH得到"消息摘要"

发送方使用自己的私钥对"消息摘要"加密(数字签名)

把数字签名附着在"报文"的末尾一起发送给接收方

(2)服务端处理

对"消息" HASH得到"报文摘要"

使用公钥对"数字签名"解密

对结果进行匹配

六、数字证书

简单说明:

证书和驾照很相似,里面记有姓名、组织、地址等个人信息,以及属于此人的公钥,并有认证机构施加数字签名,只要看到公钥证书,我们就可以知道认证机构认证该公钥的确属于此人。

数字证书的内容:

1)公钥

2)认证机构的数字签名

证书的生成步骤:

1)生成私钥openssl genrsa -out private.pem 1024

2)创建证书请求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格式文件转换成DER格式openssl x509 -outform der -in rsacert.crt -out rsacert.der

5)导出P12文件openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt

iOS开发中的注意点:

1)在iOS开发中,不能直接使用PEM格式的证书,因为其内部进行了Base64编码,应该使用的是DER的证书,是二进制格式的;

2)OpenSSL默认生成的都是PEM格式的证书。

七、https

HTTPS和HTTP的区别:

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS和HTTP的区别主要为以下四点:

1)https协议需要到ca申请证书,一般免费证书很少,需要交费。

2)http是 超文本传输协议 ,信息是明文传输,https则是具有 安全性 的 ssl 加密传输协议。

3)http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4)http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的 网络协议 ,比http协议安全。

5)SSL:Secure Sockets Layer安全套接字层;用数据加密(Encryption)技术,可确保数据在网络上传输过程中不会被截取及窃听。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape 浏览器 即可支持SSL。目前版本为3.0。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

  • 姹傚畨鍗撳姞瀵,瀹夊崜搴旂敤鍔犲瘑鏂瑰紡?
    绛旓細鐖卞姞瀵嗘彁渚涘叚绉嶇嫭鐗鐨勫姞瀵鏈嶅姟锛屼互婊¤冻涓嶅悓鐢ㄦ埛鐨勯渶姹傦細1. 浜哄伐瀹℃牳鍔犲瘑 鐖卞姞瀵嗗湪寮鍙鑰呬笂浼犵殑搴旂敤缁忚繃涓ユ牸鐨勪汉宸ュ畨鍏ㄥ鏍稿悗锛屾彁渚涘姞瀵嗘湇鍔★紝纭繚APP鐨勫畨鍏ㄦс傛墍鏈夊熀纭鍔犲瘑椤圭洰鍧囧寘鍚湪鍐呫傜敤鎴峰彧闇鍦ㄧ埍鍔犲瘑瀹樼綉涓婁紶APK鏂囦欢锛屽嵆鍙韩鐢ㄨ繖涓鏈嶅姟銆2. 鍚庡彴鑷姩鍖栧姞瀵 瀵逛簬閭d簺缁忚繃浜哄伐瀹℃牳骞惰璁や负鍙俊璧栫殑...
  • js涓父瑙佺殑鏁版嵁鍔犲瘑涓庤В瀵嗙殑鏂规硶
    绛旓細鍔犲瘑鍦ㄦ垜浠墠绔殑寮鍙戜腑涔熸槸缁忓父閬囪鐨勩傛湰鏂囧彧鎶婃垜浠甯哥敤鐨勫姞瀵嗘柟娉杩涜鎬荤粨銆備笉鍘荤籂缁撳姞瀵嗙殑鍏蜂綋瀹炵幇鏂瑰紡锛堝瘑鐮佸锛屽お搴炲ぇ浜嗭級銆傚父瑙佺殑鍔犲瘑绠楁硶鍩烘湰鍒嗕负杩欏嚑绫伙紝RSA鍔犲瘑锛歊SA鍔犲瘑绠楁硶鏄竴绉嶉潪瀵圭О鍔犲瘑绠楁硶銆傚湪鍏紑瀵嗛挜鍔犲瘑鍜岀數瀛愬晢涓氫腑RSA琚箍娉涗娇鐢ㄣ傦紙杩欐墠鏄缁忕殑鍔犲瘑绠楁硶锛夐潪瀵圭О鍔犲瘑绠楁硶锛氶潪瀵圭О鍔犲瘑...
  • 鐢ㄤ簬鏂囦欢鍔犲瘑鐨勭畻娉曟湁鍝簺,浠ュ強瀹冧滑鐨勫師鐞?
    绛旓細90骞翠唬鍒濈敱MIT璁$畻鏈虹瀛﹀疄楠屽鍜孯SA Data Security Inc鑱斿悎寮鍙銆侻D5绠楁硶閲囩敤128浣鍔犲瘑鏂瑰紡锛屽嵆浣夸竴鍙拌绠楁満姣忕鍙皾璇10浜挎潯鏄庢枃锛岃璺戝嚭鍘熷鏄庢枃涔熻1022骞淬傚湪802.1X璁よ瘉涓紝涓鐩翠娇鐢ㄦ绠楁硶銆傚姞瀵嗙畻娉曚箣浜---ELGamal ELGamal绠楁硶鏄竴绉嶈緝涓甯歌鐨勫姞瀵绠楁硶锛屼粬鍩轰簬1984骞存彁鍑虹殑鍏挜瀵嗙爜浣撳埗鍜屾き鍦嗘洸绾...
  • 甯哥敤鐨勫姞瀵绠楁硶鏈夊摢浜?
    绛旓細宸茬煡鐨勯拡瀵笰ES鍞竴鐨勬垚鍔熸敾鍑绘槸鏃侀亾鏀诲嚮锛2005骞存椂浣跨敤缂撳瓨鏃跺簭鏀诲嚮娉曪紝鐮磋В浜嗕竴涓杞絆penSSL AES鍔犲瘑绯荤粺鐨勫鎴锋湇鍔″櫒銆傞拡瀵瑰尯鍧楀姞瀵嗙郴缁熸渶甯歌鐨勬柟寮锛屾槸閫氳繃瀵瑰姞瀵嗗惊鐜鏁拌緝灏戠殑鐗堟湰灏濊瘯鏀诲嚮锛岀劧鍚庢敼杩涚畻娉曞悗缁х画鏀诲嚮楂樼骇鐗堟湰锛岀洰鍓嶈繖涓牬瑙鏂规硶杩樹笉澶疄鐢ㄣ傚彟澶栫敱浜嶢ES鐨勬暟鎹粨鏋勫叿鏈変簳鐒舵湁搴忕殑浠f暟缁撴瀯锛...
  • ios 涓寮鍙戜腑鐢ㄦ埛淇℃伅涓鐨勫姞瀵嗘柟寮鏈夊摢浜
    绛旓細5.2 瀵规櫘閫氳姹傘佽繑鍥炴暟鎹紝鐢熸垚MD5鏍¢獙锛圡D5涓姞鍏ュ姩鎬佸瘑閽ワ級锛岃繘琛屾暟鎹畬鏁存э紙绠鍗曢槻绡℃敼锛屽畨鍏ㄦц緝浣庯紝浼樼偣锛氬揩閫燂級鏍¢獙銆5.3 瀵逛簬閲嶈鏁版嵁锛屼娇鐢≧SA杩涜鏁板瓧绛惧悕锛岃捣鍒伴槻绡℃敼浣滅敤銆5.4 瀵逛簬姣旇緝鏁忔劅鐨勬暟鎹紝濡傜敤鎴蜂俊鎭紙鐧婚檰銆佹敞鍐岀瓑锛夛紝瀹㈡埛绔彂閫佷娇鐢≧SA鍔犲瘑锛屾湇鍔″櫒杩斿洖浣跨敤DES(AES)鍔犲瘑銆傚師鍥...
  • ios搴旂敤寮鍙杩囩▼涓浣曞姞瀵嗐侀槻鍐呰喘鐮磋В绛,绠鍗鍔犲瘑鏂规硶
    绛旓細1.鏈湴鏁版嵁鍔犲瘑 瀵筃SUserDefaults锛宻qlite瀛樺偍鏂囦欢鏁版嵁鍔犲瘑锛屼繚鎶ゅ笎鍙峰拰鍏抽敭淇℃伅銆2. URL缂栫爜鍔犲瘑 瀵圭▼搴忎腑鍑虹幇鐨刄RL杩涜缂栫爜鍔犲瘑锛岄槻姝RL琚潤鎬佸垎鏋 3. 缃戠粶浼犺緭鏁版嵁鍔犲瘑 瀵瑰鎴风浼犺緭鏁版嵁鎻愪緵鍔犲瘑鏂规锛屾湁鏁堥槻姝㈤氳繃缃戠粶鎺ュ彛鐨勬嫤鎴幏鍙 4. 鏂规硶浣擄紝鏂规硶鍚嶉珮绾ф贩娣 瀵搴旂敤绋嬪簭鐨勬柟娉鍚鍜屾柟娉浣撹繘琛屾贩娣...
  • 鍔犲瘑杞欢濡備綍浣跨敤
    绛旓細瀵逛簬杞欢寮鍙鑰呮潵璇达紝閫夋嫨鍔犲瘑杞欢鐨勬柟娉曚篃鏈夊緢澶氾紝鍙瀹夎濂藉鎴风浠ュ悗锛屽嬀閫夊姞瀵嗙殑閫夐」灏卞彲浠搴旂敤涓嶅悓寮哄害鐨勫姞瀵嗘柟寮锛屽涓嬪浘鎵绀恒傚姞瀵嗗己搴﹁瀹 鍦–odeMeter鍔犲瘑鐙楄缃晫闈腑锛岃姝ラ鏄鍔犲瘑寮哄害杩涜璁惧畾锛屽乏杈瑰彲閫夋嫨鍑犵鍔犲瘑澧炲己妯″紡锛岃屽彸杈瑰彲璁惧畾鍙嶄睛娴婦ebugger鐮磋В鐨勯槻鎶ょ骇鍒紝鍦ㄨ繖閲岄粯璁ら夐」鍔犲瘑寮哄害涔...
  • 鏍¢獙鍙傛暟鐨勫姞瀵嗘柟寮忓強绠楁硶
    绛旓細BLOWFISH锛屽畠浣跨敤鍙橀暱鐨勫瘑閽ワ紝闀垮害鍙揪448浣嶏紝杩愯閫熷害寰堝揩锛涘叾瀹冪畻娉曪紝濡侲lGamal銆丏effie-Hellman銆佹柊鍨嬫き鍦嗘洸绾跨畻娉旹CC绛夈2銆佸崟鍚戞暎鍒楃畻娉 锛氬崟鍚戞暎鍒楀嚱鏁颁竴鑸敤浜庝骇鐢熸秷鎭憳瑕侊紝瀵嗛挜鍔犲瘑绛夛紝甯歌鐨鏈夛細MD5锛圡essage Digest Algorithm 5锛夛細鏄疪SA鏁版嵁瀹夊叏鍏徃寮鍙鐨勪竴绉嶅崟鍚戞暎鍒楃畻娉曪紝MD5琚箍娉涗娇鐢紝鍙互...
  • WIFI鏃犵嚎鍚勭鍔犲瘑鏂瑰紡澶ф瘮鎷
    绛旓細濡傛灉杩欎簺鏁版嵁閮芥病缁忚繃鍔犲瘑鐨勮瘽锛岄粦瀹㈠氨鍙互閫氳繃涓浜涙暟鎹寘鍡呮帰宸ュ叿鏉ユ姄鍖呫佸垎鏋愬苟绐ユ帰鍒板叾涓殑闅愮銆傚紑鍚棤绾跨綉缁滃姞瀵嗭紝杩欐牱鍗充娇浣犲湪鏃犵嚎缃戠粶涓婁紶杈撶殑鏁版嵁琚埅鍙栦簡涔熸病鍔炴硶(鎴栬呮槸璇存病閭d箞瀹规槗)琚В璇汇備袱绉甯哥敤鐨勫姞瀵WEP銆乄PA 鐩墠锛屾棤绾跨綉缁滀腑宸茬粡瀛樺湪濂藉嚑绉嶅姞瀵嗘妧鏈紝鏈甯镐娇鐢ㄧ殑鏄疻EP鍜學PA涓ょ鍔犲瘑鏂瑰紡銆
  • 宓屽叆寮忕郴缁鐨勫姞瀵嗘柟娉鏈夊摢浜
    绛旓細鑰楃數閲忔洿灏忋2 鍩轰簬 SMC 鎶鏈殑浠g爜鍔犲瘑鍙互瀵规寚瀹氬嚱鏁拌繘琛屼唬鐮佺墖鍔犲瘑锛屽彧鏈夌▼搴忚繍琛岀殑鏃跺欐墠鑳借В瀵嗭紝鐮磋В鑰呮棤娉 Dump 鍑烘暣浣撶殑鍐呭瓨锛屾湁鏁堥槻姝㈤嗗悜宸ョ▼宸ュ叿瀵圭▼搴忚繘琛岄潤鎬佸垎鏋愩3 鏅鸿兘鍘嬬缉闅愯棌绋嬪簭涓殑浠g爜鍜屾暟鎹紝闃绘 IDA PRO 绛夊伐鍏风殑鍙嶇紪璇戯紝骞朵笖鏈夋晥鐨勯槻姝簡鍔犲3鍚鐨勫簲鐢浣撶Н鑶ㄨ儉銆
  • 扩展阅读:华为手机万能密码6位 ... 10种常用的加密算法 ... 文件直接加密怎么设置 ... 简单的密码加密方法 ... wifi加密方式选哪个 ... 怎么避开公司的加密软件 ... 十大常见密码加密方式 ... 文件夹加密的三种方法 ... 无线加密方式哪种最安全 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网