Py学习  »  Python

如何在python中加密特定语言?

Harshit Trivedi • 5 年前 • 1653 次点击  

我已经加密了一些数据。这里我的加密转换器是aes-256-cbc。

import base64
import hashlib
from Crypto import Random
from Crypto.Cipher import AES

class AESCipher(object):

   def __init__(self, key):  
       self.key = hashlib.sha256(key.encode()).digest()


   def encrypt(self, raw):
       raw = self._pad(raw)
       iv = Random.new().read(AES.block_size)
       cipher = AES.new(self.key, AES.MODE_CBC, iv)
       return base64.b64encode(iv + cipher.encrypt(raw))

    def _pad(self, s):
       return s + (AES.block_size- len(s) % AES.block_size) * chr(AES.block_size - len(s) % AES.block_size)


 key = some key
 raw='한글 (한국말)이라고도하는 한국어는 남한과 한국의 공식 언어입니다'
 AESCipher_obj=AESCipher(key)
 val = AESCipher_obj.encrypt(raw)
 print(val)

当我执行我的代码时,它会给我这个错误。

 > Traceback (most recent call last):   File "aes2.py", line 27, in
    > <module>
    >     s= AESCipher_obj.encrypt(raw)   File "aes2.py", line 17, in encrypt
    >     return base64.b64encode(iv + cipher.encrypt(raw))   File "/usr/local/lib/python3.5/dist-packages/Crypto/Cipher/blockalgo.py",
    > line 244, in encrypt
    >     return self._cipher.encrypt(plaintext) ValueError: Input strings must be a multiple of 16 in lengt

我的输入数据是韩语,但当我尝试使用英语时,它工作得很好。那么如何为特定语言加密呢?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40538
 
1653 次点击  
文章 [ 3 ]  |  最新文章 5 年前