Coding List

Coding List

不可逆编码方式

  1. MD4

    MD4是麻省理工学院教授Ronald Rivest于1990年设计的一种信息摘要算法。它是一种用来测试信息完整性的密码散列函数的实行。其摘要长度为128位,一般128位长的MD4散列被表示为32位的十六进制数字。这个算法影响了后来的算法如MD5、SHA 家族和RIPEMD等。

    MD4(123)=C58CDA49F00748A3BC0FCFA511D516CB

  1. MD5

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。
    对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
    MD5加密后所得到的通常是32位的编码,而在不少地方会用到16位的编码,16位加密就是从32位MD5散列中把中间16位提取出来!其实破解16位MD5散列要比破解32位MD5散列还慢,因为他多了一个步骤,就是使用32位加密后再把中间16位提取出来, 然后再进行对比,而破解32位的则不需要,加密后直接对比就可以了 。

    16位:MD5(123)=AC59075B964B0715

    32位:MD5(123)=202CB962AC59075B964B07152D234B70

  1. MD6 (了解)

    MD6是一种算法。继MD5被攻破后,在Crypto2008上, Rivest提出了MD6算法,该算法的Block size为512 bytes(MD5的Block Size是512 bits), Chaining value长度为1024 bits, 算法增加了并行 机制,适合于多核CPU。

  2. SHA1

    安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要,(但会有1x10 ^ 48分之一的机率出现相同的消息摘要,一般使用时忽略)。

    SH1(123)=40bd001563085fc35165329ea1ff5c5ecbdbbeef

  3. SHA2

    SHA-224、SHA-256、SHA-384,和SHA-512并称为SHA-2。新的散列函数并没有接受像SHA-1一样的公众密码社区做详细的检验,所以它们的密码安全性还不被大家广泛的信任。虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的散列算法。

    SHA224(123)= 78d8045d684abd2eece923758f3cd781489df3a48e1278982466017f

    SHA256(123)= a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

    SHA384(123)= 9a0a82f0c0cf31470d7affede3406cc9aa8410671520b727044eda15b4c25532a9b5cd8aaf9cec4919d76255b6bfb00f

    SHA(123)= 3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2

  4. SHA3

    由于近年来对传统常用Hash 函数如MD4、MD5、SHA0、SHA1、RIPENMD 等的成功攻击,美国国家标准技术研究所(NIST)在2005年、2006年分别举行了2届密码Hash 研讨会;同时于2007年正式宣布在全球范围内征集新的下一代密码Hash算法,举行SHA-3竞赛•新的Hash算法将被称为SHA-3,并且作为新的安全Hash标准,增强现有的FIPS 180-2标准。算法提交已于2008年10月结束,NIST 将分别于2009年和2010年举行2轮会议,通过2轮的筛选选出进入最终轮(final round)的算法,最后将在2012年公布获胜算法。公开竞赛的整个进程仿照高级加密标准AES 的征集过程。2012年10月2日,Keccak被选为NIST竞赛的胜利者, 成为SHA-3.。
    SHA-3,之前名为Keccak算法,是一个加密杂凑算法。SHA-3并不是要取代SHA-2,因为SHA-2目前并没有出现明显的弱点。由于对MD5出现成功的破解,以及对SHA-0和SHA-1出现理论上破解的方法,NIST感觉需要一个与之前算法不同的,可替换的加密杂凑算法,也就是现在的SHA-3。

  5. RIPEMD-160哈希加密算法

    RIPEMD-160 是一个 160 位加密哈希函数。它旨在用于替代 128 位哈希函数 MD4、MD5 和 RIPEMD。RIPEMD 是在 EU 项目 RIPE(RACE Integrity Primitives Evaluation,1988-1992)的框架中开发的。
    RIPEMD(123)=e3431a8e0adbf96fd140103dc6f63a3f8fa343ab

    可逆编码方式

  6. url编码

    url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)
    作为URL的一部分或者分离地发给服务器。
    http://www.xxx.com/index.php?parameter=123&code=del
    http%3a%2f%2fwww.xxx.com%2findex.php%3fparameter%3d123%26code%3ddel
  7. ASCll编码

    最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。

  1. unicode编码:

    Unicode 给所有的字符指定了一个数字用来表示该字符,Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以。

  1. UTF-8编码:

    UTF-8编码规则:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。UTF-8转换表表示如下:

  1. Base64编码

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

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

  1. 计算机单位:

    位:bit,是电子计算机中最小的数据单位。每一位的状态只能是0或1。

    字节:Byte,8个二进制位构成1个”字节(Byte,可简写为B)”,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。

    字:”字”由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。字是计算机进行数据处理和运算的单位。

    KB:在一般的计量单位中,通常K表示1000。只是这时K表示1024,也就是2的10次 方。1KB表示1K个Byte,也就是1024个字节。1KB=1024B

    1KB=1024B=210B
    1MB=1024KB=10241024B=220B
    1GB=1024MB=1024
    2014KB=102410241024B=230B
    1TB=1024GB=240B


` 时刻提醒自己的,基础是基石 `