0 0

结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?5

结果始终都是24位,且最后两位都是等号==,请问这种加密算法是如何实现的?比如:
把“1”加密得到:2lciyOzbzWGgc4XggfEwlg==
把“2lciyOzbzWGgc4XggfEw”加密得到:9pmPlgzttQuLvO3NHCRQpg==
请大虾们赐教,谢谢!
2008年12月27日 16:16

3个答案 按时间排序 按投票排序

0 0

如果只是为了查看原文,在网上搜索一下“乱码查看器”。那玩意可以编码,也可以解码。

2009年1月07日 15:16
0 0

Base64 使用US-ASCII子集的64个字符,即大小写的26个英文字母,0-9,+,/。

编码总是基于3个字符,每个字符用8位二进制表示,因此一共24位,再分为4四组,每组6位,表示一个Base64的值。如下:

"A", "B", "C", "D", "E", "F", "G", "H", "I","J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f",
"g", "h", "i","j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "/"

Base64值为0就是A,为27的就是b。这样,每3个字符产生4位的Base64字符。如果被加密的字符串每3个一组,还剩1或2个字符,使用特殊字符"="补齐Base64的4字。

举个例子说BASE64算法:

比如字符串 abcde

先取前三个字节abc

a    b    c

97  98    99

然后把它们的ascii码转换成二进制(1字节8位,不足8位在前面补0 )

01100001 01100010 01100011

然后对这组二进制数据重新分组,每组6位

011000 010110 001001 100011

再分别把这四组二进制转换成十进制数据
24     22    9    35

然后在

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

这里边对照一下

0对第1个,1对第2个依此类推
24就对第25个Y
22对第23个W
9对第10个J
35对第36个j

加密后的密文就是YWJj

对于abcde剩下的后面两个字节"de"

这是不足3字节的情况

先把它转换了

ascii码是
100  101

转成二进制是

01100100 01100101

再分成6位一组的小组

重新分组
011001 000110 0101

最后一组不足6位,在后面补0。

011001 000110 010100

转10进制

25  6  20

然后在

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

这里边对照

结果是ZGU

前面说过:每3个字符产生4位的Base64字符。如果被加密的字符串每3个一组,还剩1或2个字符,使用特殊字符"="补齐Base64的4字。

最后de经过编码的结果就是ZGU=

abcde经过编码的结果就是YwJjZGU=

这是编码过程,解码和编码是相反的一个过程,这里就不多说了。

识别是不是Base64编码其实挺简单的,Base64编码结果是由26个小写字母加26个大写字母加数字和+/这两个符号组成的,稍微观察一下挺容易看出来的。

2009年1月07日 15:09
0 0

有==是 BASE64得到的
24位是根据128位的HASH算法得到的。 至于用了什么hash算法, 我也无法知道。 肯定不是M5。 你需要了解下, 你是如何得到这个值的。 你明明知道结果, 应该程序里能让你测试得到的。 他不是一个加密算法, 是一个数字摘要算法。

2008年12月27日 20:03

相关推荐

    DES加密解密

    DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与...

    我写的加密算法和Base64编码

    这种编码方式将每3个字节(24位)的数据转换为4个6位的Base64字符,每个字符在Base64字符集中有64种可能的值,因此得名Base64。Base64字符集包括大小写字母、数字以及"+"和"/",并且通常在末尾用一个或两个等号("=")...

    Base64加密算法源码(java版).pdf

    根据提供的文件信息,我们可以深入探讨Base64加密算法在Java中的实现原理以及具体的代码细节。 ### Base64加密算法概述 Base64是一种基于64个可打印字符来表示二进制数据的方法。它通常用于将二进制数据转换为文本...

    Java中4大基本加密算法解析

    本文将详细介绍四种常见的加密算法——BASE64、MD5、SHA以及HMAC,并提供相应的Java实现示例。 #### 二、BASE64 **BASE64** 是一种编码格式,而不是加密算法。它的主要作用是将二进制数据转换为文本格式以便在网络...

    QQ加密的逆算法编写

    根据提供的信息,我们可以深入探讨QQ加密的逆算法编写这一主题,特别是聚焦于Base64解码的实现方式。下面将详细介绍这段代码所涉及的关键概念、原理以及其实现细节。 ### 1. Base64解码的基本原理 Base64是一种...

    用Java实现BASE64加密解密

    Base64编码将每3个8位字节的数据块(24位)转换为4个6位字节的数据块(24位),并用64个字符集中的字符表示这4个6位字节。当原始数据不是3的倍数时,会在末尾添加额外的填充位,通常是一个等号('=')。 在Java中,...

    非对称加密rsa des Base64 数字签名的基础

    Base64将每3个字节的数据转换为4个6位的“Base64字符”,最后用等号(=)填充以保持编码字符串长度的整数倍。解码时,这些字符会被还原为原始的二进制数据。 数字签名是一种用于验证信息完整性和发送者身份的技术。...

    base64加密工具

    Base64的原理是将每3个8位字节(24位)的数据转换成4个6位字节(24位)的数据,并在每个6位字节前添加两个等号("=")作为填充,以确保编码后的字符串长度是4的倍数。在编码过程中,Base64使用了一个64字符的字符集...

    Base64加密与解密DLL实例

    3. 拆分:将连续的6位块组合成24位的二进制数据,按照每3字节一组。 4. 去填充:根据末尾的"="数量,去除相应数量的0字节。 在DLL实例中,这些操作会被封装在函数中,供其他程序调用。开发者可以使用这些函数对...

    base64 jsp版本加密及调用

    为了确保所有数据都能正确表示,最后可能会添加一个或两个等号('=')作为填充。 在JSP中,我们通常使用Java的标准库来实现Base64操作。Java 8引入了`java.util.Base64`类,提供了方便的API用于Base64编码和解码。...

    base64加密解密

    Base64的原理是将每3个字节(24位)的数据转换为4个6位的十六进制数,然后用64个可能的字符来表示这6位的数值,这些字符包括大小写字母、数字和两个特殊符号`+`和`/`,最后一位如果是不足6位的,会在末尾添加等号(`=...

    Bases64内容加密

    最后,如果原始数据不是3的倍数,会在结果字符串末尾添加一个或两个等号(=)作为填充,以确保输出的长度是4的倍数。 描述中的"Bases64内容加密"可能是指使用Base64对某些敏感信息进行了编码,以防止非预期的查看。...

    Base64加密解密

    如果你需要保护数据的安全性,应使用更复杂的加密算法,如AES(高级加密标准)或RSA。Base64通常用于在传输层提供数据的完整性,而不是保密性。例如,在HTTPS通信中,TLS/SSL协议首先对数据进行加密,然后再使用Base...

    javascript base64加密

    例如,最后一个组只有2个有效位,则添加两个等号;如果只有一个有效位,就添加三个等号。 3. **JavaScript中的实现**:在JavaScript中,可以使用内置的`btoa()`函数对字符串进行Base64编码,而`atob()`函数用于解码...

    Java安全—Java实现Base64加密

    Base64使用64个字符(包括大小写字母、数字和两个特殊符号+和/)来表示二进制数据的每6位。因为二进制数据通常不是6的倍数,所以Base64编码会在末尾添加1或2个等号(=)作为填充,以确保编码后的字符串长度是6的倍数...

    base64加密jar包

    如果原始数据不是3的倍数,那么最后一组Base64字符可能只需要1到3位,这时会用等号('=')填充,表示填充位。 在实际应用中,Base64加密常用于保护敏感数据,如密码、API密钥或证书,因为未经解码的Base64字符串对...

    Base64实现代码

    当输入的数据长度不是3的倍数时,会在末尾添加0位来补足,最后可能还会加上1或2个等号(`=`)作为填充,表示原始数据的位数。 在Java中,实现Base64编解码主要依赖于`java.util.Base64`类,这个类从Java 8开始被...

    base64编码

    Base64编码的原理是将每3个8位字节(24位)的数据转换为4个6位的数字(每个6位数字对应ASCII码表中的一个字符),然后在每个6位数字前补足两个零,形成一个8位的字符。因为24位可以表示的最大数字是2^24-1,而6位...

    Base64 加密解密小工具

    - 解密:Base64编码的字符串通过查表还原成对应的6位二进制数,再组合成原始的24位二进制数据,最后按照字节顺序恢复为原始的二进制数据。 3. 使用Base64工具 "Base64 加密解密小工具"是一个实用程序,可以帮助用户...

Global site tag (gtag.js) - Google Analytics