java加密解密代码_base64位加密解密原理及js代码实现

base64位加密解密原理及js代码实现

在网上找了很多关于Base64加密解密的原理以一个比较通俗易懂的方式理解整理了一下大致原理如下 先上base64对照表

f9572a4f296df4d6508fbac38273bdb1.png

#加密

#1:将明文对照以acsii码表转换成一个8位二进制的数

#2:将转换后的数据已每次取六位依次取出来转换成十进制

#3:将转换出来的十进制数对照Base64对应表转换成字符

来个实例 如加密 asd

8cb7d3e1d36ec2a15e159af59a61d562.png

加密后的结果即YWJz 上面的加密是3个字母进行加密刚好24位是6的倍数。也有不是6的倍数的情况。这种情况下需要加0补充到6位,还需要注意的是。在剩余位数不是8的倍数的情况下需要补等号凑齐8的倍数。(至于为什么要补等号还是理解不了)一个等号也是按6位处理,剩余2位时补一个等号 剩余4位时补两个等号

9c826d536f20e1a0b63003d3b2ea588c.png

加密后的结果即YWI=

#解密

了解了加密原理后逆向解密的原理也就很容易弄懂了。将密文按照对照表获得十进制数,将十进制转换成二进制取低六位整合在一起后八位八位的取进行解密即可

对YWJz进行解密

Y => 24 => 00011000

W => 22 => 00010110

J => 9 => 00001001

z => 57 => 00111001

各取低六位组合在一起的结果:011000 010110 001001 111001

依次取8位的结果:01100001 01100010 011111001

转换为十进制的结果:98 98 115 =>abs

上面的解密是密文中不带=的,对于密文中带=直接将=去除掉即可

如解密YWI=

Y => 24 => 00011000 W => 22 => 00010110 I => 8 => 00000100

各取低六位组合在一起的结果:011000 010110 001000

依次取8位的结果:01100001 01100010 00(舍去即可)

转换为十进制的结果:97 98 =>ab

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值