3

问题陈述

我需要使用 RSA 算法在 Laravel 中加密细节,然后在 Javascript 中解密。

所做的努力

在 laravel 中,我使用phpseclib库进行加密。下面给出了用于加密字符串的 Laravel 代码...

$publicKey= file_get_contents(storage_path('app/' . $disk .'/'. $filename));
$rsa = new RSA();
$rsa->loadKey($publicKey); // public key
$plaintext = 'hello world';
$ciphertext = $rsa->encrypt($plaintext);
$ciphertext = base64_encode($ciphertext);

echo '<br>base64_encode = '. $ciphertext;

下面给出了这个脚本的输出。

base64_encode = FDtZ1XAzW6yH7LIwIBb9VjL64KQb/UPclpV4Stc2xSoiAdIQc2r1dYFgrsJflkQfLtA/7ZJ5IHWQUWjNUuUTWmMYKk2xRmCjShTEhSkI9JEJC70ltjhxB7BXPRLIofpFdc8HVq8koEZOFTvtZ5YmJt86/iqLby0t41VhlDqkN2U=

私钥

-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDNIdcnHmDD+XzO+nBTt2VOjcCfJQs2kefZbVWzSgczLeYBfPsg MNX5r/q5oB65pfs07iMO9fBi5mpIG9fQ8sEbGfEupDQjBdPE6v2TCn/FR0JmH6OO tbKZVmn2mC2KxmB2PDluUM3dN5YJtezZnJn/vGYCTse4W8AYL9ljYTnRbQIDAQAB AoGAOHWV+EheLdJfTcCUZhZWJdbSK3tQqMZj3+495kj7zlRVuBckL2oBmuWaxriR fFt41sqsj5OVhEMTAaHYNsR57XMaZa+Frv49vv8TO3YK41oI4fIhdI9hxbc5zcYR GJMVnRrzxKcAQ7gxZzxDvjqnS3Qv6gAuX+ohBNeYNJoFdSkCQQD4Wutn852uRDIW DJiIizp1zW4wyRYtXUk684z1GpXYnnyFStvtnVMwNxx+fS19up89Ur13uq275Qo1 DQDrA8lHAkEA03JRD0zGkhuMZ74pouBXUMlbH179BQWQsj95cvMvdH8SCDZ5tdxX KECmASawUN1NqAsI4/0sVo24rOy9fNopqwJBALglKeDE2IiLFhwVMNAlc64/KNHR d7khLxgf18cw9CROtwNaEyHnAfSBGIaNKDrOMh4VCFkLOKBV3jChuKmJACcCQQDR YOHjxKLdC2p9UFDqeDv+Q2V4KxdhYaFm4HPi3+yd7zZr64WaEBY+RcYcXbM6X+oF /OdQ2+KL0sqMceExQNcBAkEAwtV3+J7fIJ5TJIlCN6WZRbfLo3g8DzzzEkyA3CcS nSO4ZQoCclINsZWJBTk31eEVA4+Sna5MpOtGSFK2+5h8ew== -----END RSA PRIVATE KEY-----

我正在使用jsencrypt库来解密 RSA 字符串。

var crypt = new JSEncrypt();
crypt.setKey('-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDNIdcnHmDD+XzO+nBTt2VOjcCfJQs2kefZbVWzSgczLeYBfPsg MNX5r/q5oB65pfs07iMO9fBi5mpIG9fQ8sEbGfEupDQjBdPE6v2TCn/FR0JmH6OO tbKZVmn2mC2KxmB2PDluUM3dN5YJtezZnJn/vGYCTse4W8AYL9ljYTnRbQIDAQAB AoGAOHWV+EheLdJfTcCUZhZWJdbSK3tQqMZj3+495kj7zlRVuBckL2oBmuWaxriR fFt41sqsj5OVhEMTAaHYNsR57XMaZa+Frv49vv8TO3YK41oI4fIhdI9hxbc5zcYR GJMVnRrzxKcAQ7gxZzxDvjqnS3Qv6gAuX+ohBNeYNJoFdSkCQQD4Wutn852uRDIW DJiIizp1zW4wyRYtXUk684z1GpXYnnyFStvtnVMwNxx+fS19up89Ur13uq275Qo1 DQDrA8lHAkEA03JRD0zGkhuMZ74pouBXUMlbH179BQWQsj95cvMvdH8SCDZ5tdxX KECmASawUN1NqAsI4/0sVo24rOy9fNopqwJBALglKeDE2IiLFhwVMNAlc64/KNHR d7khLxgf18cw9CROtwNaEyHnAfSBGIaNKDrOMh4VCFkLOKBV3jChuKmJACcCQQDR YOHjxKLdC2p9UFDqeDv+Q2V4KxdhYaFm4HPi3+yd7zZr64WaEBY+RcYcXbM6X+oF /OdQ2+KL0sqMceExQNcBAkEAwtV3+J7fIJ5TJIlCN6WZRbfLo3g8DzzzEkyA3CcS nSO4ZQoCclINsZWJBTk31eEVA4+Sna5MpOtGSFK2+5h8ew== -----END RSA PRIVATE KEY-----');  

var text = 'FDtZ1XAzW6yH7LIwIBb9VjL64KQb/UPclpV4Stc2xSoiAdIQc2r1dYFgrsJflkQfLtA/7ZJ5IHWQUWjNUuUTWmMYKk2xRmCjShTEhSkI9JEJC70ltjhxB7BXPRLIofpFdc8HVq8koEZOFTvtZ5YmJt86/iqLby0t41VhlDqkN2U=';
text = atob(text);
var dec = crypt.decrypt(text);
console.log(dec);

下面给出了控制台中js代码的输出...

null

要求

这是在单独的离线系统中解密字符串所必需的。我不会在实时网站上使用 javascript 解密。而是在离线系统上使用 javascript 进行解密。

4

0 回答 0