加解密与编解码基础知识

加解密与编解码基础介绍

    • BASE64编码
    • 信息摘要算法SHA-2和HMAC算法
    • 对称加密算法AES
    • RSA算法
    • ECC加密算法
    • **首先,感谢任何一个阅读,关注或点赞我博客的朋友!! 当然博客中的任何问题都欢迎大家随时指出! 欢迎有兴趣的人私信留下你的联系方式,我们可以一起沟通,一起学习哦!我的学习交流QQ群366469549。 再次感谢大家的支持!!! 我会再接再厉的!!!**

BASE64编码

26个大写英文字母
26小写英文字母
10数字
”+””/”

转换前 10101101,10111010,01110110
转换后 00101011, 00011011 ,00101001 ,00110110
十进制 43 27 41 54 对应码表中的值 r b p 2
所以上面的24位编码,编码后的Base64值为 rbp2
原理是38=46

关于这个编码的规则:
① .把3个字节变成4个字节。 总长度长了1/3
如果要编码的二进制数据不是3的倍数,最后会剩下1个或2个字节怎么办时,需在原数据后面添加1个或2个零值字节,使其字节数是3的倍数。然后,在编码后的字符串后面添加1个或2个等号“=”,表示所添加的零值字节数。解码的时候,会自动去掉。
② 每76个字符加一个换行符。
③ .最后的结束符也要处理。
优点:可以将二进制数据转换成可打印字符,方便传输数据;对数据进行简单的加密,肉眼安全。
缺点:内容编码后的体积会变大,编码和解码需要额外的工作量

它的使用场景有很多,比如将图片等资源文件以Base64编码形式直接放于代码中,使用的时候反Base64后转换成Image对象使用;有些文本协议不支持不可见字符的传递,只能转换成可见字符来传递信息。有时在一些特殊的场合,大多数消息是纯文本的,偶尔需要用这条纯文本通道传一张图片之类的情况发生的时候,就会用到Base64,比如多功能Internet 邮件扩充服务(MIME)就是用Base64对邮件的附件进行编码的。

信息摘要算法SHA-2和HMAC算法

单向散列函数,又称单向Hash函数、杂凑函数,就是把任意长的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种函数。这个输出串称为该消息的散列值。一般用于产生消息摘要,密钥加密等.

SHA1 比 MD5 的 安全性更强。对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。基于 MD5、SHA1
的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查文件完整性 以及 数字签名 等场景。
SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

2017年2月23日,Google公司公告宣称他们与CWI Amsterdam合作共同创建了两个有着相同的SHA-1值但内容不同的PDF文件,这代表SHA-1算法已被正式攻破。

SHA-2下又可再分为六个不同的算法标准包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。

加解密与编解码基础知识
s_box的内容过长,这里不做展示。如果顺利找到该表,那么所用的加密算法很有可能就是AES算法。
此后,再查看一下是否存在形式如下的赋值语句:
mov al , [esi + eax]
mov [ecx + edx – 1] , al
截图如下:
加解密与编解码基础知识
以及是否存在与密钥的异或操作,并存储异或结果的操作:
加解密与编解码基础知识
这里所说的椭圆和高中学的完全不一样。
一条椭圆曲线是在射影平面上满足威尔斯特拉斯方程(Weierstrass)所有点的集合。
加解密与编解码基础知识
椭圆曲线在软件注册保护的应用

我们知道将公开密钥算法作为软件注册算法的好处是Cracker很难通过跟踪验证算法得到注册机。下面,将简介一种利用Fp(a,b)椭圆曲线进行软件注册的方法。
  
  软件作者按如下方法制作注册机(也可称为签名过程)
  1、选择一条椭圆曲线Ep(a,b),和基点G;
  2、选择私有密钥k(k  
3、产生一个随机整数r(r  4、将用户名和点R的坐标值x,y作为参数,计算SHA(Secure Hash Algorithm 安全散列算法,类似于MD5)值,即Hash=SHA(username,x,y);
  5、计算sn≡r – Hash *k (mod n)
  6、将sn和Hash作为 用户名username的序列号

软件验证过程如下:(软件中存有椭圆曲线Ep(a,b),和基点G,公开密钥K)
  1、从用户输入的序列号中,提取sn以及Hash;
  2、计算点R≡snG+HashK( mod p ),
如果sn、Hash正确,其值等于软件作者签名过程中点R(x,y)的坐标,因为 sn≡r-Hashk (mod n)
    所以 sn
G + HashK  
=(r-Hash
k)G+HashK   
=rG-HashkG+HashK   
=rG- HashK+ HashK  
=rG=R ;
  3、将用户名和点R的坐标值x,y作为参数,计算H=SHA(username,x,y);
  4、如果H=Hash 则注册成功。如果H≠Hash ,则注册失败(为什么示注意点R与Hash的关联性)。

简单对比一下两个过程:
  作者签名用到了:椭圆曲线Ep(a,b),基点G,私有密钥k,及随机数r。
  软件验证用到了:椭圆曲线Ep(a,b),基点G,公开密钥K。
  Cracker要想制作注册机,只能通过软件中的Ep(a,b),点G,公开密钥K ,并利用K=kG这个关系获得k后,才可以。而求k是很困难的。

首先,感谢任何一个阅读,关注或点赞我博客的朋友!! 当然博客中的任何问题都欢迎大家随时指出! 欢迎有兴趣的人私信留下你的联系方式,我们可以一起沟通,一起学习哦!我的学习交流QQ群366469549。 再次感谢大家的支持!!! 我会再接再厉的!!!

来源:摔不死的笨鸟

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年8月5日
下一篇 2019年8月5日

相关推荐