加密与js逆向

三种加密方式:

数据加密方式描述主要解决问题常用算法
单向加密指只能加密数据,而不能解密数据数据的完整性MD5,SHA系列算法
对称加密指数据加密和解密使用相同的密钥数据的机密性DES,AES
非对称加密也叫公钥加密,指数据加解密使用不同的密钥---密钥对身份验证DSA,RSA

进制转换法:

print(bin(266)) #十进制转二进制

print(int('0b100001010',2)) #二进制转十进制

print(hex(266)) #十进制转十六进制

print(int('0x10a', 16)) #十六进制转十进制

单向加密:

MD5(message-digest algorithm):

MD5加密 32位是e10开头 16位是49b开头

from hashlib import md5
md5_obj=md5()
md5_obj.update('加密数据'.encode())
print(md5_obj.hexdigest()) #648bfc23726d2e76af569f6fea26c1f8

md5_obj.update('加密数据'.encode())
print(md5_obj.hexdigest()) #47c58fbd984d00c4c0c24396be4ed52f

md5_obj=md5() #每次重新加密需要最好实例化一下 保证数据准确性
md5_obj.update('加密数据加密数据'.encode())
print(md5_obj.hexdigest()) #47c58fbd984d00c4c0c24396be4ed52f

 SHA(Secure Hash Algorithm):

sha512_obj=sha512()
sha512_obj.update('加密数据'.encode())
print(sha512_obj.hexdigest()) 

#26f5f6136978fb24bc9821293c0dad9b5a6f35377b88e672d4ddacff1086a30819164061dffce41fde63bb3fc3d3d7f54ca82119d268428eedeaa29f10565c24

对称加密:

DES(Data Encryption Standard):

from Cryptodome.Cipher import DES

key=b'1234abcd' # 需要是二进制的 并且8位数
#加密
des=DES.new(key,DES.MODE_ECB) #不仅需要key值 还需要知道用哪种模式
content='加密内容' #一个中文在utf-8是3个字节,在gbk是2个字节 这里的contente为12个字节
print(len(content.encode()))
en_data=content+(8-len(content.encode())%8)*'-' #字节不够需要补字节 先取除以8的余数 再用8减去该余数 再补充到文本里 补码'-'可以自己来控制
enc_data=des.encrypt(en_data.encode())
print(des.decrypt(enc_data))
#解密
t_data=des.decrypt(enc_data)
print(t_data.decode())

AES(Advanced Encryption Standard):

key=b'12345878abcdefgh' #需要是二进制的 长度为16位数
iv=b'1234567890abcdef' #初始化向量 增加密码的安全性 必须是16位长度 二进制
aes=AES.new(key,AES.MODE_CBC,iv)#1.key密码 2.mode加密模式 3.初始化向量
#加密
content='爱你一万年'
b_content=content.encode() #转成二进制
b2_data=content+(16-len(b_content)%16)*'-'
b2c_data=aes.encrypt(b2_data.encode())
print(b2c_data)
#解密
aes1=AES.new(key,AES.MODE_CBC,iv)
de_data=aes1.decrypt(b2c_data)
print(de_data.decode())

非对称加密:

RSA加密:

公钥(7(E),33(N))私钥(3(D),33(N))
源数据h,k2,11密文
十进制8,112的3次方=8,11的3次方=1331求幂
求幂8的7次方=2097152,11的7次方=194871718%33=8,1331%33=11求余
求余2097152%33=2,19487171%33=118,11十进制
密文2,11h,k

明文**E%N=密文 

密文**D%N=明文

E=7 D=3 N=33

  1. 两个质数 p,q  p=3 q=11
  2. 模值=质数相乘 N=p*q  N=33
  3. 欧拉函数 T=(p-1)*(q-1)=20  
  4. 选公钥 E=3   a.必须是质数  b.范围 1<E<T  c.不能是T的因子
  5. 计算私钥 (D*E)%T=1
import rsa

public_key,private_key=rsa.newkeys(999)

content='圣诞快乐!'
en_data=rsa.encrypt(content.encode(),public_key)
print(en_data)
de_data=rsa.decrypt(en_data,private_key)
print(de_data.decode())

#也可以通过自定义来传值
jf1=rsa.PublicKey(3,5) #公模 指数
print(jf1)

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值