我应该在加密中使用哪个php 7.2函数和哪种加密算法,以获取16个十六进制字符的密文?

时间:2019-06-05 05:14:03

标签: php encryption

我需要加密16个十六进制字符并以密文获得16个十六进制字符, 我已经尝试使用openssl加密16个十六进制字符后,该怎么做(添加或更改)以在密文中获取16个十六进制字符。

<?php

$key = 'qwetyasdftrewqasdcxz';

function my_encrypt($data, $key) {

    $encryption_key = base64_decode($key);
    $iv = '11111111';
    $encrypted = openssl_encrypt($data, 'des', $encryption_key, 0, $iv);

    return base64_encode($encrypted );
}

function my_decrypt($data, $key) {
    $encryption_key = base64_decode($key);
    $iv = '11111111';
    $encrypted_data=base64_decode($data);
    return openssl_decrypt($encrypted_data, 'des', $encryption_key, 0, $iv);
}
$password_plain = 0x34adeb98761a2b;
echo $password_plain . "<br>";
$password_encrypted = my_encrypt($password_plain, $key);
echo $password_encrypted . "<br>";
$password_decrypted = my_decrypt($password_encrypted, $key);
echo $password_decrypted . "<br>";

1 个答案:

答案 0 :(得分:0)

  

我需要加密16个十六进制字符并以密文形式获取16个十六进制字符,

就像一个XY Problem的示例。

为什么输入和输出都需要16个十六进制字符?就目前而言,您的操作要求已经注定了。

在我看来您正在存储密码。加密通常是工作的错误工具。改为查看password hashing

但是,如果您确实需要加密字符串,并且希望加密是安全的,则必须接受您的输出将长于输入。

原因是,加密本身就是vulnerable to chosen-ciphertext attacks。您需要某种方式来确保加密邮件的完整性,以防止攻击破坏邮件的机密

最好的办法是询问您的要求。 “为什么我需要输入为16个十六进制字符?为什么我需要输出为16个十六进制字符?”

此外,请勿使用DES或Triple-DES。