Преобразование устаревшего шифрования TypeScript в PythonPython

Программы на Python
Ответить
Anonymous
 Преобразование устаревшего шифрования TypeScript в Python

Сообщение Anonymous »

Я пытаюсь перенести существующий метод шифрования и дешифрования из старого приложения TypeScript в новое приложение Python. В этом методе используется шифрование AES-256-GCM, однако разработчик, написавший его, похоже, не использовал тег аутентификации, который, по-видимому, является требованием стандарта шифрования, но не пакета TypeScript Crypto.
Вот устаревший код:

Код: Выделить всё

import type { BinaryLike } from "crypto"
import {
type CipherGCMTypes,
createCipheriv,
createDecipheriv,
randomBytes,
} from "crypto"

let secret = "abcdefghijklm"
// auto pad
if (secret.length < 32) secret += "\0".repeat(32 - secret.length)

// 256-bit/32-byte AES GCM encryption
const algorithm: CipherGCMTypes = "aes-256-gcm"

export interface EncryptionResult {
iv: TByteType
value: TByteType
}
export function encrypt(text: BinaryLike): EncryptionResult {
const iv = randomBytes(16)

const cipher = createCipheriv(algorithm, secret, iv)
const enc = cipher.update(text)

return {
value: enc,
iv,
}
}
const b64ToBuf = (b64: string) => Buffer.from(b64, "base64url")
const bufToB64 = (buf: Buffer) => buf.toString("base64url")

export function encryptBase64Res(text: BinaryLike): EncryptionResult {
const res = encrypt(text)

return {
value: bufToB64(res.value),
iv: bufToB64(res.iv),
}
}
const divider = "::"
export function encryptBase64(text: BinaryLike): string {
const res = encryptBase64Res(text)
return `${res.value}${divider}${res.iv}`
}
export function decryptBase64(b64: string): Buffer {
const [value, iv] = b64.split(divider)

return decryptBase64Res({
value,
iv,
})
}
export function decryptBase64Res(res: EncryptionResult): Buffer {
return decrypt({
value: b64ToBuf(res.value),
iv: b64ToBuf(res.iv),
})
}
export function decrypt({ iv, value }: EncryptionResult): Buffer {
const decipher = createDecipheriv(algorithm, secret, iv)
return decipher.update(value)
}
Любая попытка миграции до сих пор приводила к отсутствию ошибок тега аутентификации с использованием пакета шифрования на Python. Можно ли из этой структуры выработать тег? Должен быть тег, который устанавливается при первоначальном шифровании и считывается при расшифровке в методах createCipheriv и createDecipheriv.


Подробнее здесь: https://stackoverflow.com/questions/791 ... -to-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»