【发布时间】:2020-09-23 11:05:33
【问题描述】:
我使用 php 使用 libsodium 创建了一个密文,如下所示:
$contents = 'Hello World!';
$key = sodium_hex2bin('9fcc21c22142e0cb30e80da941cf1fd2221a3d273b232dac12d0d195d50c0202', '');
$nonce = sodium_hex2bin('dd024212d41933c01417bd2aa2b64682224072c8aa1573f3', '');
$cipher = sodium_crypto_secretbox($contents, $nonce, $key);
echo bin2hex($cipher);
// output: 0af8d46269eae0788ce4c20569067724402e410b35d9a0c5197be955
然后,在我的 react native 应用程序中,我使用了react-native-libsodium(java libsodium-jni 的包装器)来生成相同的密码:
const test = async() => {
let cipher = await Sodium.crypto_secretbox_easy(
"Hello World!",
"dd024212d41933c01417bd2aa2b64682224072c8aa1573f3",
"9fcc21c22142e0cb30e80da941cf1fd2221a3d273b232dac12d0d195d50c0202"
);
console.log(cipher);
};
await test();
// output: 6d6ca73e3daa63a661a813c8ab6fb49f798e68965c3267eb7e1c6cdc
我使用另外两个 javascript 库 sodium-native 和 sodium-plus 测试了该操作。在这两种情况下,结果密文与php版本相同。
由于某些原因,我更喜欢使用 react-native-libsodium,但一天后我找不到这个库生成不同密文的原因以及如何解决这个问题。如何生成相同的密文?
【问题讨论】:
标签: java php react-native libsodium