Tag: aes

AES加密。 PHP和Kotlin \ Java的区别

有一个网站使用CryptoJSAES库来编码和解码请求。 https://github.com/blocktrail/cryptojs-aes-php/blob/master/src/CryptoJSAES.php abstract class CryptoJSAES { /** * @param $data * @param $passphrase * @param null $salt ONLY FOR TESTING * @return string encrypted data in base64 OpenSSL format */ public static function encrypt($data, $passphrase, $salt = null) { $salt = $salt ?: openssl_random_pseudo_bytes(8); list($key, $iv) = self::evpkdf($passphrase, $salt); $ct = openssl_encrypt($data, ‘aes-256-cbc’, $key, true, […]

Java / Kotlin使用私钥和公钥加密AES密钥

所以我最近看到一个来自computerphile的视频,他们说当使用加密时,你应该使用AES密钥并用公钥和私钥对这个密钥进行加密。 这意味着:我有一个别人的公钥和我自己的私钥。 使用你自己的私钥加密它的原因是,这验证了消息必须来自我,因为没有其他人拥有我的私钥,所以使用我的公钥加密只能处理来自我的消息。 问题是,我第一次加密后,字节数组outcomming变得太长,我不能再加密它。 有没有解决的办法? 这是我的代码: val aKey = generateAESKey() val kG = KeyPairGenerator.getInstance("RSA") kG.initialize(2048) val own = kG.genKeyPair() val strange = kG.genKeyPair() String(aKey.encoded).encryptRSA(strange.public).encryptRSA(own.public) fun generateAESKey(): Key { val generator = KeyGenerator.getInstance("AES") generator.init(128) return generator.generateKey() fun String.encryptRSA(key: Key): String { val encryptCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding") encryptCipher.init(Cipher.ENCRYPT_MODE, key) val cipherText = encryptCipher.doFinal(this.toByteArray(charset("UTF- 8"))) return String(cipherText) } fun […]