浅谈加密算法
前言
本文只涉及加密算法认识与使用,不涉及加密算法的源码分析与加密原理。(因为本人自己也看不懂源码,但是会用真就足够了,就算让我写一个这样的算法,给我源码也不会写,何况还是开源的)
本人并非密码学专家,但接触过 JS 逆向和安卓 Java 层,对一些加密算法也有所了解,借此来分享一下自己所接触过的常见加密算法与使用。
涉及到的常用的加密算法有
- 消息摘要算法
- MD5
- SHA1,SHA3,SHA256...
- HmacMD5,HmacSHA1,HmacSHA256...
- 对称加密算法
- DES
- 3DES(也称 TripleDES,DESede)
- AES
- 非对称加密算法
- RSA
编码
涉及到加密算法,必须要涉及到编码格式, 主要涉及到的编码方式编码有以下几种
UTF-8
针对 Unicode 的一种可变长度字符编码。它可以用来表示 Unicode 标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理 ASCII 字符的软件无须或只进行少部份修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
GBK (gb2312)
GBK 即“国标” ,汉字编码的标准编码字库。
上述两者的区别
-
表示中文的所占字节不同
同样表示一个中文字符,gbk 所占 2 字节,而 utf8 占 3 字节,通俗点就是如果你的项目代码涉及的都是中文这些,不会有希腊文,韩文等等,那么优先 gbk 编码,因为字节少,占用空间少。但如果涉及到更广的语言,那么 uf8 无疑是首选的。一般来说 Unicode 标准中 utf8 已经够用了,在编写代码中多数环境也是再 utf8 的标准上。总之基本 utf8 就完事了。
如需更深入了解可自行百度相关编码知识,本文只做与加密算法相关。