Python AES暗号化インスタンス解析
2173 ワード
本文は主にaes暗号化技術を簡単に分析し,Pythonを用いて実現し,具体的には以下のように紹介する.
AESは、アメリカ連邦政府が採用した暗号化技術で、AESにはいくつかのモデルがあり、その中でCBCモデルは公認の安全性が最も良いモデルであり、TLSに採用されている.
暗号化と復号化の両方はkeyを決定する必要があり、keyの長さは16ビット、24ビット、32ビットのいずれかであり、それぞれ異なるアルゴリズムに対応している.
keyの長さが16ビットの場合、暗号化された明文の長さは16の整数倍でなければならないが、実際の使用では、このような巧みなことは起こりにくいため、明文を充填する必要があり、最も一般的な方法は「0」を充填し、復号化するまで待ってから、復号化された明文の右側の「0」をすべて除去することである.もし私が明文の一番右側がもともと山の0だったら、そうすれば、問題が出るのではないでしょうか.滴で、確かに問題が発生しますが、このような明文は何に使いますか.あなたは考えすぎて、このような明文は一生出会うことはできないかもしれません.
次にpythonのサンプルコードを見て、AES暗号化技術を使用して暗号化と復号化の方法を示します.
まとめ
以上がPython AES暗号化の実例解析のすべてであり,皆さんの役に立つことを願っている.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!
AESは、アメリカ連邦政府が採用した暗号化技術で、AESにはいくつかのモデルがあり、その中でCBCモデルは公認の安全性が最も良いモデルであり、TLSに採用されている.
暗号化と復号化の両方はkeyを決定する必要があり、keyの長さは16ビット、24ビット、32ビットのいずれかであり、それぞれ異なるアルゴリズムに対応している.
keyの長さが16ビットの場合、暗号化された明文の長さは16の整数倍でなければならないが、実際の使用では、このような巧みなことは起こりにくいため、明文を充填する必要があり、最も一般的な方法は「0」を充填し、復号化するまで待ってから、復号化された明文の右側の「0」をすべて除去することである.もし私が明文の一番右側がもともと山の0だったら、そうすれば、問題が出るのではないでしょうか.滴で、確かに問題が発生しますが、このような明文は何に使いますか.あなたは考えすぎて、このような明文は一生出会うことはできないかもしれません.
次にpythonのサンプルコードを見て、AES暗号化技術を使用して暗号化と復号化の方法を示します.
#coding=utf-8
'''''
key
'''
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
class MyCrypto():
def __init__(self, key):
self.key_len = len(key)
if not self.key_len == 16 and not self.key_len == 24 and not self.key_len == 32:
raise Exception("length of key is wrong")
self.key = key
self.mode = AES.MODE_CBC #
def encrypt(self, text):
'''''
key , , \0
16 , ascii
'''
cryptor = AES.new(self.key, self.mode, self.key)
count = len(text)
add = self.key_len - (count % self.key_len)
text = text + ('\0' * add)
self.ciphertext = cryptor.encrypt(text)
return b2a_hex(self.ciphertext)
def decrypt(self, text):
'''''
, \0, \0
'''
cryptor = AES.new(self.key, self.mode, self.key)
plain_text = cryptor.decrypt(a2b_hex(text))
return plain_text.rstrip('\0')
if __name__ == '__main__':
mc = MyCrypto("kwsy_zds20160822")
e = mc.encrypt(" ")
d = mc.decrypt(e)
print e,d
まとめ
以上がPython AES暗号化の実例解析のすべてであり,皆さんの役に立つことを願っている.興味のある方は引き続き当駅の他の関連テーマを参照することができます.不足点があれば、伝言を歓迎します.友达の本駅に対する支持に感谢します!