Кто-нибудь знает, как зашифровать в java и расшифровать в nodejs?Независимо от алгоритма, aes / cbc будет лучше, но это не имеет значения.
После нескольких дней и дней поиска решения кажется, что алгоритм не совпадает в двух языках.
Вот мой код в kotlin / java:
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val text = "Hello everybody !"
val password = "1234567812345678"
val encrypted = encrypt(text, password)
Log.i("MainActivity", "encrypted = $encrypted")
val decrypted = decrypt(encrypted, password)
Log.i("MainActivity", "decrypted = $decrypted")
}
private fun encrypt(text: String, password: String): String
{
val keySpec = SecretKeySpec(password.toByteArray(), "AES")
val ivSpec = IvParameterSpec(password.toByteArray())
val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec)
val results = cipher.doFinal(text.toByteArray())
return Base64.encodeToString(results, Base64.NO_WRAP or Base64.DEFAULT)
}
private fun decrypt(text: String, password: String): String
{
val keySpec = SecretKeySpec(password.toByteArray(), "AES")
val ivSpec = IvParameterSpec(password.toByteArray())
val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec)
return String(cipher.doFinal(Base64.decode(text, Base64.DEFAULT)))
}
, а вот мой код в nodejs:
var crypto = require('crypto');
var text = "Hello everybody !"
var password = new Buffer("1234567812345678")
console.log("Password = " + password)
var encrypted = encrypt(text, password)
console.log("Encrypted = " + encrypted)
var decrypted = decrypt(encrypted, password)
console.log("Decrypted = " + decrypted)
function encrypt(data, password)
{
var cipher = crypto.createCipheriv('aes-128-cbc', password, password);
var crypted = cipher.update(data, 'utf8', 'hex');
crypted += cipher.final('hex');
return crypted;
}
function decrypt(data, password)
{
var decipher = crypto.createDecipheriv('aes-128-cbc', password, password);
var dec = decipher.update(data, 'hex', 'utf8');
dec += decipher.final('utf8');
return dec;
}
Я уже прочитал все учебники об этом, но ничего не работает.