用dw编辑器自带的加密工具,或者自己写js加密解密脚本
B. base64编码以及url safe base64是怎么工作的
ASCII码一共规定了128个字符的编码,这128个符号,范围在[0,127]之间.
其中,[0,31],及127, 33个属于不可打印的控制字符.
在电子邮件传输信息时,有些邮件网关会把[0,31]这些控制字符给悄悄清除.
还有的早期程序,收到[128,255]之间的国际字符时,甚至会发生错误.
如何在不同邮件网关之间安全的传输控制字符,国际字符,甚至二进制文件?
于是作为MIME多媒体电子邮件标准的一部分—base64被开发出来.
1.a 什么是url_safe base64编码?
在上面的base64传统编码中会出现+, /两个会被url直接转义的符号,因此如果希望通过url传输这些编码字符串,我们
需要先做传统base64编码,随后将+和/分别替换为- _两个字符,在接收端则做相反的动作解码
http://www.ietf.org/rfc/rfc4648.txt
复制代码
/**
* URL base64解码
* '-' -> '+'
* '_' -> '/'
* 字符串长度%4的余数,补'='
* @param unknown $string
*/
function urlsafe_b64decode($string) {
$data = str_replace(array('-','_'),array('+','/'),$string);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
return base64_decode($data);
}
/**
* URL base64编码
* '+' -> '-'
* '/' -> '_'
* '=' -> ''
* @param unknown $string
*/
function urlsafe_b64encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('-','_',''),$data);
return $data;
}
复制代码
2: 一句话说完base64怎么工作的?
把N字节的内容对应的8*N位, 每6位砍成1段,得到 (8*N)/6 个单元,
每个单元的值,都在[0,63]之间,再把其值对应1个ascii字符,拼接起来,OK!
base64_encode(’PHP’) ==> ‘UEhQ’, 编码过程如下:
3: 如果每6位砍成1段,但不能整除,余下2个位或4位怎么办?
用”0″来补至6位, 并再次转化为”base64字符表”中的某个字符.
然后,再用”=”字符当做6个位,继续填充,直至总位数能被8带整除.
字符串 二进制序列(红字为填充位) 编码结果
PHP 010100 000100 100001 010000 UEhQ
it 011010 010111 0100
00 xxxxxx
aXQ=
bool 011000 100110 111101 101111 011011 00
0000 xxxxxx xxxxxx
Ym9vbA==
4:base64表示图片
通过上面的演示,可以看出,base64也可以编码二进制文件,如邮件中的图片和附件.
编码后,我们可以在网页或邮件的源码里,直接体现此图片,
而不必把图片放在服务器上,引用其链接.
用例:base64(’abc.png’) ==> ‘encoded-result’;
则在网页中, <img src=”data:image/png;base64,encoded-result” />
看到下面这个5角星了吗? 右键看源码,就会发现图片是一串字符串
5: base64编码后字节的变化
很容易推算出, 编码后,每6个位变成8个位.
因此,编码后字节约比编码前多33%.
6: base64串结尾的”=”可以去掉吗?
从上面的编码规则可以反推出, 在base64解码的过程中, 要清除掉结尾处的等号,
然后再反查”base64索引与字母对照表”,转换成原始的字节序列.
那么,去掉尾部的等号,并没有丢失原始信息,但结构变得不规范.
解码前是否判断完整性,这取决于你的应用程序.
实测PHP中的base64_decode函数,并不检测尾部的等号是否完整.
C. 求URL-SAFE-BASE64加密解密的java代码
base64 编码后,有几个是不能url safe。所以自己替换一下。收到后,再替换回来
D. 求大神指点base64_encode php
你的PHP的源码a.php必须用UTF-8字符编码。目测大概是用的GB2312。所以不相同。
改用Utf-8后
echobase64_encode("王先生");
得到
546L5YWI55Sf
E. js中非标准Base64解码,求解码源码,谢谢!
base64编码:
string base64_encode(string data)
data:要进行base64编码的数据。该函数的返回结果为字符串类型
还原:
string base64_decode(string encoded_data)
encoded_data 指要进行base64解码的字符串
F. html img 有了id后无法正常显示src 分析源码发现base64编码 求大神!!
这是怎么来分解的呢?
这些我还是有点看不懂
G. base64解密后的数组怎么变短了
commons-codec 挺好用的
H. 跪求一份e4a 中文编程Base64加密和jie密源码
代码是我自己写的!水平有限,反正功能实现了。原来是迅雷链接转换的函数,已经修改为Base64加密了,可以直接用,解密的没有。。。需要的话参照易语言的修改吧。。。以下为函数:
函数 迅雷编码(原文本 为 文本型) 为 文本型
变量 原文 为 字节型()
变量 余数 为 整数型
变量 三字节数据 为 字节型(3)
变量 码表 为 字节型(64)
变量 len_x 为 整数型
变量 len_y 为 整数型
变量 i 为 整数型
变量 k 为 整数型
变量 结果 为 字节型()
变量 原文扩充 为 字节型(1)
变量 结果扩充 为 字节型(1)
'原文本 = "AA" & 原文本 & "ZZ"
原文 = 文本到字节(原文本 ,"GBK")
原文扩充(0) = 0
结果扩充(0) = 61
len_x = 取字节集长度 (原文)
余数 = len_x % 3
如果 (余数 = 1) 则
原文 = 合并字节集(原文 , 原文扩充)
原文 = 合并字节集(原文 , 原文扩充)
len_x = len_x + 2
否则如果 (余数 = 2) 则
原文 = 合并字节集(原文 , 原文扩充)
len_x = len_x + 1
结束 如果
len_y = len_x * 4 / 3
i = 1
码表(0) = 65
码表(1) = 66
码表(2) = 67
码表(3) = 68
码表(4) = 69
码表(5) = 70
码表(6) = 71
码表(7) = 72
码表(8) = 73
码表(9) = 74
码表(10) = 75
码表(11) = 76
码表(12) = 77
码表(13) = 78
码表(14) = 79
码表(15) = 80
码表(16) = 81
码表(17) = 82
码表(18) = 83
码表(19) = 84
码表(20) = 85
码表(21) = 86
码表(22) = 87
码表(23) = 88
码表(24) = 89
码表(25) = 90
码表(26) = 97
码表(27) = 98
码表(28) = 99
码表(29) = 100
码表(30) = 101
码表(31) = 102
码表(32) = 103
码表(33) = 104
码表(34) = 105
码表(35) = 106
码表(36) = 107
码表(37) = 108
码表(38) = 109
码表(39) = 110
码表(40) = 111
码表(41) = 112
码表(42) = 113
码表(43) = 114
码表(44) = 115
码表(45) = 116
码表(46) = 117
码表(47) = 118
码表(48) = 119
码表(49) = 120
码表(50) = 121
码表(51) = 122
码表(52) = 48
码表(53) = 49
码表(54) = 50
码表(55) = 51
码表(56) = 52
码表(57) = 53
码表(58) = 54
码表(59) = 55
码表(60) = 56
码表(61) = 57
码表(62) = 43
码表(63) = 47
三字节数据 (0) = 1
三字节数据 (1) = 2
三字节数据 (2) = 3
k = 0
判断循环首 k < len_y
结果 = 合并字节集(结果 , 结果扩充)
k = k + 1
判断循环尾
变量循环首 k = 1 至 len_x 步进 3
三字节数据 (1 - 1) = 原文 (k - 1)
三字节数据 (2 - 1) = 原文 (k + 1 - 1)
三字节数据 (3 - 1) = 原文 (k + 2 - 1)
结果 (i - 1) = 码表 (位右移 (三字节数据 (1 - 1), 2) + 1 - 1)
结果 (i + 1 - 1) = 码表 (位左移 (位与 (三字节数据 (1 - 1), 3), 4) + 位右移 (三字节数据 (2 - 1), 4) + 1 - 1)
结果 (i + 2 - 1) = 码表 (位左移 (位与 (三字节数据 (2 - 1), 15), 2) + 位右移 (三字节数据 (3 - 1), 6) + 1 - 1)
结果 (i + 3 - 1) = 码表 (位与 (三字节数据 (3 - 1), 63) + 1 - 1)
i = i + 4
变量循环尾
如果 (余数 = 1) 则
结果 (len_y - 1) = 61
结果 (len_y - 2) = 61
否则如果 (余数 = 2) 则
结果 (len_y - 1) = 61
结束 如果
'迅雷编码 = "
I. 求java加密源代码(MD5,base64)
加密什么加密字符串吗,我这里有md5的算法
public final static String MD5(String pwd) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
try {
byte[] strTemp = pwd.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
return null;
}
}
J. Java Base64加码解码 Base64.encodeBase64 ( ) 和 new BASE64Enccoder( ).encode( )区别
Base64.encodeBase64 ( ) 可以处理换行符,
new BASE64Enccoder( ).encode( )需要单独处理换行符。
在linux/windows下,推荐使用第一种,不用自己单独处理换行。