我们有大量数据是使用Halite在PHP 7.1安装中加密的,并且服务器最近更新为7.2,而libsodium现在已成为PHP的一部分。我们有包含200个字符的密钥文件(公共和秘密文件)(下面显示一个旧的测试公共密钥进行演示):
const navigateAction = StackActions.navigate({
index: 1,
routes: [
({ routeName: 'ScreenB' }),
({ routeName: 'ScreenC' }),
],
});
this.props.navigation.dispatch(navigateAction);
它们是使用以下代码生成的:
31400100d6c01eb5744a3b508b389a2b10e4b554f8f004f8a0afc78beb02f574bbf2d8017563a641bd508e6a3c132e3350bf1bd1bdf402115b2a628dd63cf5cf5dae1fedbe6e4bc2b5e58c372c3bd960fada57741ef204a9a19a767f126af653a60d5be0
我们曾经像这样进行加密/解密(当然永远不会在同一服务器上):
$encryptionKey = KeyFactory::generateEncryptionKey();
KeyFactory::save($encryptionKey, $keyPath . $keyPublic);
既然我们使用的是PHP 7.2,如何使用libsodium / halite先前版本中生成的这些密钥来解密现有数据?尝试在PHP7.2的新$webPublicKey = KeyFactory::loadEncryptionPublicKey($keyPath . $keyPublic);
$encrypted = Asymmetric::seal($string,$webPublicKey);
$webSecretKey = KeyFactory::loadEncryptionSecretKey($keyPath . $keySecret);
$decrypted = Asymmetric::unseal($encrypted,$webSecretKey);
函数中使用旧密钥会不断导致密钥长度错误。
感谢您提供的任何指导。
谢谢!