常见的编码和解密

十进制与二进制

 bin(255)  #十进制转二进制

'0b11111111'

 int("0b11111111",2)  #二进制转十进制

255

十进制与十六进制

hex(255)  #十进制转十六进制

'0xff'

 int("0xff",16)  #十六进制转十进制

255

unicode编码

字符和unicode编号是一一对应的关系,世界上的每个字符都对应着一个unicode编号,根据编号可以进行多种编码。utf-8,utf-16,utf-32...,gbk编码等

ord("中")

20013

 chr(20013)

'中'

 "中".encode("utf-8")  #汉字中utf-8编码

b'\xe4\xb8\xad'

 "中".encode("gbk")   #汉字中  gbk编码

b'\xd6\xd0'

ascii码

sha1系列

from  hashlib import sha256
sha256_obj=sha256()#创建sha算法加密对象
sha256_obj.update("加密数据".encode())#参数:内容是要加密数据  二进制格式
sha256_obj.hexdigest()
#结果
'fc016213ebd4e12fd50ebeee2a074d09aef8b4dffa247401227976cfdec1ebf9'

sha256_obj.update("加密数据".encode())#参数:内容是要加密数据  二进制格式
sha256_obj.hexdigest()
##同一个sha对象两次调用update 第二次保留第一次调用的信息
'5cbb02bfa5153ef91d29c8edcd213ffde626a9e6c0ac6d25e1d9ad6ddbca0078'

Base64

function bs4_1(data) {
    // 加密
    return btoa(data)
}

function bs4_2(data) {
    // 解密
    return atob(data)
}

后面大概会补==号

MD5

from  hashlib import md5
md5_obj=md5()#创建md5算法加密对象
md5_obj.update("加密数据".encode())#参数:内容是要加密数据  二进制格式
md5_obj.hexdigest()
#结果
'648bfc23726d2e76af569f6fea26c1f8'

md5_obj.update("加密数据".encode())
md5_obj.hexdigest()
##同一个md5对象两次调用update 第二次保留第一次调用的信息
'47c58fbd984d00c4c0c24396be4ed52f'

DES加密算法

安装密码库

**windows**:   pip  install   pycryptodomex

**linux**:  pip  install   pycryptodome

DES

Python——加密算法DES_python des加密_羽丶千落的博客-CSDN博客

DES3

密钥是16位

AES加密算法

 密钥:

 填充

 

 

 nopadding填充方法

不做任何填充但是必须是128位的整被数

zeropadding 填充方法

用0来进行最后的填充

pkcs7padding填充方法

要求铭文为16字节的整被数,缺几个就在后面补数字几

 模式

ECB 模式

 CBC模式

 

CFB模式

(密文反馈:Cipher feedback)**

与ECB和CBC模式只能够加密块数据不同,CFB能够将块密文(Block Cipher)转换为流密文(Stream Cipher)。

OFB模式

**4.(输出反馈:Output feedback)**

OFB是先用块加密器生成密钥流(Keystream),然后再将密钥流与明文流异或得到密文流,解密是先用块加密器生成密钥流,再将密钥流与密文流异或得到明文,由于异或操作的对称性所以加密和解密的流程是完全一样的。

主要特征:

iv :初始向量

mode:工作模式

padding :填充方式

RSA加密

python中的RSA加密与解密_python rsa_我是个假程序员的博客-CSDN博客

控制流平坦化

 1简单的操作


AST语法树

加密网站:JavaScript Obfuscator Tool 

查看代码结构网站:AST explorer

古典加密

栏栅栏密码解法

一般比较常见的是2栏的栅栏密码。

比如明文:THERE IS A CIPHER

去掉空格后变为:THEREISACIPHER

两个一组,得到:TH ER EI SA CI PH ER

先取出第一个字母:TEESCPE

再取出第二个字母:HRIAIHR

连在一起就是:TEESCPEHRIAIHR

还原为所需密码。

而解密的时候,我们先把密文从中间分开,变为两行:

T E E S C P E

H R I A I H R

再按上下上下的顺序组合起来:

THEREISACIPHER

分出空格,就可以得到原文了:

THERE IS A CIPHER

列移位加密
奇奇怪怪的古典密码_citytwilight的博客-CSDN博客

列移位密码(Columnar Transposition Cipher)是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文。下面给出一个例子。

我们以明文 The quick brown fox jumps over the lazy dog,密钥 how are u 为例:

将明文填入 5 行 7 列表(事先约定填充的行列数,如果明文不能填充完表格可以约定使用某个字母进行填充)

密钥: how are u,按 how are u 在字母表中的出现的先后顺序进行编号,我们就有 a 为 1,e 为 2,h 为 3,o 为 4,r 为 5,u 为 6,w 为 7,所以先写出 a 列,其次 e 列,以此类推写出的结果便是密文:

密文: qoury inpho Tkool hbxva uwmtd cfseg erjez

工具

http://www.practicalcryptography.com/ciphers/classical-era/columnar-transposition/ 行列数相等
 

凯撒密码:

【加密算法】凯撒密码的原理及Python实现_凯撒密码加密算法python_一个甜甜的大橙子的博客-CSDN博客

原理
通常加密和解密互为逆过程,我们知道如何加密,那么解密的方法也就清晰了,对于凯撒密码,只要我们知道“移位”的值k,那么就能对密文进行解密。
简化问题,我们做如下假设:

只考虑小写英文字母
‘a’ = 0 ‘b’ = 1 ‘c’ = 2 … ‘z’ = 25
其中,word代表被加密字母,encrypt()代表加密函数,k代表移位值,那么加密过程的数学公式为:

encrypt(word) = (word + k) mod 26

解密过程的数学公式为:

decrypt(word) = (word - k) mod 26
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值