1、rsa
原理:
RSA 是非对称算法,加解密使用不同的密钥。
两个密钥都可以用于加密,解密时需要使用另一个密钥。但是,通常用公钥加密私钥解密,因为公钥是近乎完全公开的,对于私钥加密的数据,有太多的人可以解密了。理论上 A 和 B 之间要通过 RSA 实现保密通信,需要 A 和 B 各自生成一组密钥,同时保管好自己的私钥;用对方的公钥加密要发送的消息,用自己的私钥解密对方发送过来的消息。
公钥(E,N)明文^E%N=密文
私钥(D,N)密文^D%N=明文
公钥私钥制作原理:
1: 2个质数p=3;q=11 2 :质数相乘N=pxq=3×11=33 3: 欧拉函数T=(p-1)x (q-1)=2x10=20 4 :选公钥E质数;1<公钥<T;不是T的因子E=(3, 33) 5 :算私钥D (DxE)%T=1 D=(7,33)
通过中国剩余定理写出脚本
2、MD5
原理:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 在MD5算法中,首先需要对信息进行填充,填充方法如下:先在信息后面填充一个1,之后就是无数个0,直到使其字节长度对512求余数的结果等于448,即(n*512) + 448 ,为什么要是余数为448呢,因为剩下的512-448 等于64位 是用于表示填充前的信息长度。加上剩下的64位,即(n+1)*512,长度刚刚好是512的整数倍数。 然后就与链接变量进行循环运算,得出结果。MD5中有四个32位被称作链接变量(Chaining Variable)的整数参数,他们分别为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。当设置好这四个链接变量后,就开始进入算法的四轮循环运算。具体内部怎么运算,是关于数学方面的,有兴趣的同学可以自行去了解下,这里不进行更加多的解释。
BUUCTF-Crypto-丢失的MD5(题解)_buuctf 丢失的md5-CSDN博客 学习例题写出脚本