Rijndael Padding в Python - PullRequest
       46

Rijndael Padding в Python

0 голосов
/ 02 июня 2019

Я знаю, где проблема, но я не знаю, как ее исправить.Проблема с прокладкой.Я понятия не имею об этом и как это работает.Я пытался искать в Интернете, но ничего не помогло.Я пытаюсь реализовать эту функцию для работы с моим веб-сайтом .Питон шифрует и отправляет данные, а PHP расшифровывает их.

Вот действительный код моего питона:

from rijndael.cipher.crypt import new
from rijndael.cipher.blockcipher import MODE_CBC
import base64

PADDING = b'.'

def r_pad(payload, block_size=32):
    return payload + (block_size - len(payload) % block_size) * PADDING

KEY = 'lkirwf897+22#bbtrm8814z5qq=498j5'
IV = '741952hheeyy66#cs!9hjv887mxx7@8y'
plain_text = "A padded string to BLOCKSIZE length."

rjn = new(KEY, MODE_CBC, IV, blocksize=32)
encd = rjn.encrypt(r_pad(plain_text))
data = base64.b64encode(encd)
print(data)

rjn = new(KEY, MODE_CBC, IV, blocksize=32)
data = base64.b64decode(data)
decd = rjn.decrypt(r_pad(data))
print (decd)

Это вывод:

Dv0Y/ AFXdFMlDrcldFCu8v5o9zAlLNgyM + vO + PFeSrqWdzP1S1cumviFiEjNAjz5njnMMC9lfxsBl71x5y + xCw ==

дополняемая строка для длины BLOCKSIZ.E ............Å¿: è ° ⌐┘n┤ «╜Px╜: æC┬ ♣ ╬Q┤ ▼« U_ ♦ â☻ìr

Мне нужно, чтобы вывод зашифрованной строки был примерно таким:

Dv0Y / AFXdFMlDrcldFCu8v5o9zAlLNgyM + vO + PFeSrpO8Ve82mdUcc4rkzp9afDYc75NmkSd4mdflt38kceOdA == * *1013* * * * * *:

EncryptRJ256("lkirwf897+22#bbtrm8814z5qq=498j5", "741952hheeyy66#cs!9hjv887mxx7@8y", "A padded string to BLOCKSIZE length.")

Public Function EncryptRJ256(ByVal prm_key As String, ByVal prm_iv As String, ByVal prm_text_to_encrypt As String) As String
    Dim s As String = prm_text_to_encrypt
    Dim managed2 As New RijndaelManaged With {
    .Padding = PaddingMode.Zeros,
    .Mode = CipherMode.CBC,
    .BlockSize = 256
}
    Dim stream As New MemoryStream
    Dim stream2 As New CryptoStream(stream, managed2.CreateEncryptor(Encoding.ASCII.GetBytes(prm_key), Encoding.ASCII.GetBytes(prm_iv)), CryptoStreamMode.Write)
    Dim bytes As Byte() = Encoding.ASCII.GetBytes(s)
    stream2.Write(bytes, 0, bytes.Length)
    stream2.FlushFinalBlock()
    Return Convert.ToBase64String(stream.ToArray)
End Function

Может кто-нибудь помочь, пожалуйста?Я потерян в этой точке.: /

...