Base64和urlencode

使用base64的初衷。是为了方便把含有不可见字符串的信息用可见字符串表示出来

我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。

而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那些不可见字符就有可能被处理错误,这是不利于传输的。所以就先把数据先做一个Base64编码,统统变成可见字符,这样出错的可能性就大降低了。

urlencode

url编码主要是为了解决一些url中的一些特殊字符和歧义字符或者中文字符的传输问题,

1. base64编码里面有一个 “+” 号,在urlecode编码中 “+” 会被解码成空格,urlencode时,"+" 号肯定是由空格编码出来的,但是base64编码的结果中 "+" 不是空格编码出来的,如果将base64编码作为安全的url编码使用,则 “+” 将被解码成空格,这是我们不愿看到的; 所以不要base64编码作为url编码来使用.

2. 我们知道http头里面可能会用base64编码来传输一些信息,因为这些信息不会被web服务器默认做url解码的,我们可以得到原始的编码信息, 所以http头里面使用base64编码是可以接受的

用base64编码后再进行URL编码,再传输可能会避免此类问题。

Base64编码将二进制数据按照每三个字节转换成四个字节可读字符,编码后的字符长度大约为136.1%。字符范围为 A-Z a-z 0-9 \ +。但编码后的字符串不太适合使用URL传输,中文加密后的乱码也多是因为这个原因引起:放在url中传输时+号会被替换成空格;并且每76个字符都会添加一个换行"
",这个换行符合会丢失。

例如:

哈哈哈哈哈哈。。。。

会被编码为:

uf65/rn+uf65/rn+oaOho6GjDQoNCrn+uf65/rn+uf65/qGjoaOhow0KDQq5/rn+uf65/rn+uf6h
o6GjoaM=

放在URL中传输时会变成(不是urlencode的意思,并没有urlencode)

uf65/rn uf65/rn oaOho6GjDQoNCrn uf65/rn uf65/qGjoaOhow0KDQq5/rn uf65/rn uf6h

o6GjoaM=

解析肯定会出问题。

所以在传输和解密时要做如下处理:

1.去掉

2.替换空格为+

获取到的请求数据

eyJqb3NfcGFyYW1ldGVycyI6eyJhcHBfa2V5IjoiNDUyNDJFMkU0QjA3RTNCODcyRDExNjM1MTUyRjY1MzIiLCJlbmRfZGF0ZSI6MTQ2OTgwODAwMDAwMCwiaXRlbV9jb2RlIjoiRldfR09PRFMtNDY4MTAtMSIsInVzZXJfbmFtZSI6IueIseWxi awj WumOaWueaXl iIsOW6lyIsInZlcnNpb25fbm8iOjF9fQ==

Base64编码 使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。

其中的+, /, = 都是需要urlencode的,所以无法取代。

不能,base64有转码功能:

由于 ASCII 码称为了国际标准,所以我们要把其它字符转成 ASCII 就要用到 base64。

utf-8 -> base64(编码) -> ASCII
ASCII -> base64(解码) -> utf-8

这样就可以让只支持 ASCII 的计算机支持 utf-8 了。

参考: https://juejin.im/post/5b7d50106fb9a019d7475785



  • utf-8鍜base64浠涔堝尯鍒晩?
    绛旓細姣斿璇翠腑鏂囧彲浠ョ敤utf-8缂栫爜锛屼絾鏄笉鑳界敤iso88591杩欑缂栫爜锛屽洜涓篿so88591璁捐鐨勬椂鍊欏氨娌℃湁鑰冭檻杩囦腑鏂囨眽瀛楅偅涔堝锛屽洜姝ゅ彧鑳芥樉绀哄瓧姣嶆暟瀛楀拰涓浜涚鍙凤紝鑰寀tf8杩欑鍙橀暱缂栫爜鍙互瀹圭撼闈炲父澶氱殑瀛楃锛屽彲浠ョ敤鏉ヨ〃绀鸿冻澶熷鐨勬眽瀛椼傛墍浠ヤ竴涓猽tf8缂栫爜鐨勬枃鏈敤鍙敮鎸乮so88591鐨勭紪杈戝櫒鎵撳紑灏变細涔辩爜銆傝寀rl缂栫爜鍜base64缂栫爜...
  • urls鍦╬hp涓粈涔堜綔鐢
    绛旓細浣犺鐨勬槸 php涓殑鎵╁睍 url鍑芥暟 瀹冧滑鍦ㄦ墜鍐屼腑 鏄彨 URL鏄殑 杩欎簺 url鍑芥暟鐨勪綔鐢 灏辨槸 瀵箄rl鐨勫瓧绗︿覆 杩涜 缂栫爜瑙g爜鐨
  • PHP---APP鎺ュ彛02
    绛旓細true } payload闇瑕佺粡杩Base64Url缂栫爜鍚庝綔涓篔WT鐨勭浜岄儴鍒嗐3. Signature 鍒涘缓绛惧悕浣跨敤缂栫爜鍚庣殑header鍜宲ayload浠ュ強涓涓瘑鍖欙紝浣跨敤header涓寚瀹氱殑绛惧悕绠楁硶杩涜绛惧悕 HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret )绛惧悕鏄湪鏈嶅姟绔繘琛岀殑锛屽鎴风骞朵笉鐭ラ亾锛屾墍浠ユ槸瀹夊叏鐨勩
  • 浠涔堟槸JWT
    绛旓細HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)鍙傛暟璇存槑锛欻MACSHA256锛氫娇鐢⊿HA256鏄洜涓篐eader涓璦lg锛欻S256锛屽鏋滄槸alg:HS128锛岄偅灏辨槸HMACSHA28銆俠ase64UrlEncode锛Base64涓敤鐨勪笁涓瓧绗︽槸"+"锛"/"鍜"="锛岀敱浜庡湪URL涓湁鐗规畩鍚箟锛屽洜姝ase64URL涓浠栦滑鍋...
  • PHP涓湁娌℃湁绫讳技urlencode涓鏍疯浆鎹㈣嫳鏂囧瓧绗︾殑鍑芥暟
    绛旓細杩欐槸涓や釜php鑷甫鐨剈nicode鏍囧噯鍑芥暟,鍏蜂綋鐢ㄦ硶鍙互鏌anuel 绗竴涓弬鏁版槸浣犺杞崲鐨勫瓧绗︿覆 绗簩涓弬鏁版槸encode鐨勭被鍨嬩緥濡'ISO-8859-2'绗笁涓弬鏁板彲浠ヤ笉鐢.string unicode_encode ( unicode $input , string $encoding [, int $errmode ] )unicode unicode_decode ( string $input , string ...
  • asp.net URL浼犲肩殑鏃跺,鍊煎甫鐧惧垎鍙锋庝箞寰楀埌杩欎釜鐧惧垎鍙
    绛旓細濡傛灉浣犵殑鍊煎甫鏈夌壒娈婂瓧绗︼紝寤鸿浣犲皢鍊艰繘琛岀紪鐮佸悗鍐嶄紶锛屽缓璁娇鐢base64缂栫爜锛屾帴鏀跺埌鍊煎悗鍐嶈В鐮佸氨鍙互浜,涓鑸仛缃戠珯鐨勫叕鍏辩被涓繀鐒舵湁base64鐨勭紪瑙g爜绫伙紝浣犲彲浠ヨ嚜宸辩櫨搴︽悳绱竴涓嬨/// <summary> /// 灏嗘櫘閫氭枃鏈浆鎹㈡垚Base64缂栫爜鐨勬枃鏈 /// </summary> /// <param name="value">鏅氭枃鏈</param> /...
  • java base64瑙g爜 鎬庝箞鏄贡鐮佸憿
    绛旓細浼氫贡鐮佺殑鍘熷洜鏄綘鐨勭紪鐮佷笉涓鑷村鑷寸殑php涓殑urlencode鐨勭紪鐮佹槸鍜岀郴缁熺紪鐮佷竴鑷寸殑(姣斿windows榛樿gb2312,ubuntu榛樿utf-8)鎵浠ラ鍏堥渶瑕佺‘瀹氫綘鐨勭郴缁熺紪鐮,涔嬪悗鏍规嵁寰楀埌鐨勭郴缁熺紪鐮佸湪璋冪敤java鐨刣ecode鏂规硶鐨勬椂鍊,灏嗚繖涓紪鐮佷紶鍏(鑰冭檻鍒颁綘鐨勪緥瀛愪腑鏈夌箒浣撳瓧,鎵浠,寤鸿浣犱娇鐢╱tf-8缂栫爜),浠ヤ笅鏄垜浣跨敤utf-8缂栫爜鐨...
  • OC涓SWIFT urlEncode缂栫爜鍖哄埆
    绛旓細swift璇█鍦ㄨ浆鎹㈠浘鐗囦负base64鏃惰繘琛urlEncode鏃跺嚭鐜扮殑闂銆傚樊鍒細swift鐗堟湰鍙兘瀵逛竴浜涢氱敤瀛楃鍋氳浆璇戯紙姹夊瓧绛夌瓑锛塐C鐗堟湰闇瑕佸宸插姞瀛楃鍋氳浆璇 锛!*'"();:@&=+$,/?%#[]%锛夋瘡涓壒娈婂瓧绗﹂兘杞瘧涓衡%2銆%7鈥 绛夌瓑...浣跨敤涓婃敞鎰忥細瀵瑰鏉傛暟鎹紙闊抽銆佸浘鍍忥級杞负鐨勪簩杩涘埗base64锛岀敤OC鐗堟湰銆
  • encode 鍦–++涓殑鐢ㄦ硶
    绛旓細ret += base64_chars[char_array_4[i]];i = 0;} } if (i){ for(j = i; j < 3; j++)char_array_3[j] = '\0';char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0)...
  • 姹傛暀PHP鍜孞AVA澶х base64_encode(hash_hmac('sha1',$public_key,$priv...
    绛旓細hmac_sha1_str = base64_encode(hash_hmac("sha1", $utf8Str, KEY));signature = urlencode($hmac_sha1_str);print_r($signature);JAVA渚ч渶瑕佹敞鎰忓涓嬪嚑鐐:1. hmac_sha1缂栫爜缁撴灉闇瑕佽浆鎹㈡垚hex鏍煎紡 2. java涓璪ase64鐨勫疄鐜板拰php涓嶄竴鑷,鍏朵腑java骞朵笉浼氬湪瀛楃涓叉湯灏惧~琛=鍙蜂互鎶婂瓧鑺傛暟琛ュ厖涓8鐨...
  • 扩展阅读:www.sony.com.cn ... base64 decodestring ... 免费源码资源源码站 ... base64 在线解码 ... base64 java ... iphone看免费视频的app ... base64在线转换器 ... illegal base64 ... 解码网站 ...

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