Base64 加解密c/c++

这个博客介绍了C++实现Base64编码和解码的方法,包括定义的CodeTable数组,以及C_Base64类的实现,用于Base64的编码和解码操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Base64 其实不能算是真正加密解密的安全算法,因为这个东西大家都知道怎么解密,就没有意思了。不过登陆邮件服务器的时候,登陆密码要使用BASE64 加密,因此我将算法描述如下:
    Base64 核心算法:
   明文: hello
    对应的Ascii: 0x68, 0x65, 0x6c, 0x6c, 0x6f
    二进制:  01101000 01100101 011001101 011001101 01101111
    将明文按照每三个字节,变成4个字节的原则进行变化,首先将二进制中每次拿出6个bit 形成一个密码表索引,通过这个索引转到密文。
    例如上面的:
    二进制: 01101000 01100101 011001101 011001101 01101111
 6bit 变化: 011010 000110 010101 1001101 0110011 010110 111100(后面不足的上两个0)
  十六进制: 0x1a,  0x06,  0x15,  0x4d,   0x33,   0x16,  0x3c
那么在这个十六进制作为索引在下面的加密表中查处对应的密文,
  1. const unsigned char C_Base64::CodeTable[] = 
  2.     'A',  'B',  'C',  
  3.     'D',  'E',  'F'
  4.     'G',  'H',  'I'
  5.     'J',  'K',  'L'
  6.     'M',  'N',  'O'
  7.     'P',  'Q',  'R',  
  8.     'S',  'T',  'U',  
  9.     'V',  'W',  'X'
  10.     'Y',  'Z',  'a'
  11.     'b',  'c',  'd'
  12.     'e',  'f',  'g'
  13.     'h',  'i',  'j'
  14.     'k',  'l',  'm'
  15.     'n',  'o',  'p'
  16.     'q',  'r',  's'
  17.     't',  'u',  'v'
  18.     'w',  'x',  'y'
  19.     'z',  '0',  '1',
  20.     '2',  '3',  '4'
  21.     '5',  '6',  '7',
  22.     '8',  '9',  '+',
  23.     '/'
  24. };
  在这个表中0x1a,对应的是:'a'。
一次查出为aGVsbG8,很明显不够4的整数倍,那么再补一个特殊字符"=",因此密文: aGVsbG8=
就是说在不够的情况下,可能要补一个或者二个特殊的字符"=",凑够4的整数倍。

因此C++的实现源码如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值