美文网首页
Android端使用RSA加密解密

Android端使用RSA加密解密

作者: 爱哭的笨小孩 | 来源:发表于2019-04-02 21:59 被阅读0次


class MainActivity : AppCompatActivity() {

    private val publicKeyStr = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC41cJ0pyvkSLjTK0BRXOx/0MWW" +
            "r/8awOJxrD9woU4b4EepSmvOhyWtj9XT2Gvl0wvbgLu1v28rbegpaHnFQS1AfBfN" +
            "YMHfiiJksVskEfR8yX4em9EIpm2Y+ZRSPvT8Zx0Z0eceRYi5by1vsSFBxMaChs9q" +
            "HyNGlJPJxSDbB3xZlwIDAQAB"
    private val privateKeyStr = "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALjVwnSnK+RIuNMr" +
            "QFFc7H/QxZav/xrA4nGsP3ChThvgR6lKa86HJa2P1dPYa+XTC9uAu7W/bytt6Clo" +
            "ecVBLUB8F81gwd+KImSxWyQR9HzJfh6b0QimbZj5lFI+9PxnHRnR5x5FiLlvLW+x" +
            "IUHExoKGz2ofI0aUk8nFINsHfFmXAgMBAAECgYA4nuLOsVc0u0JDDgDJ69lW3jFp" +
            "E8jl/ShhAg79BazTxUSui2my/puAK4upNab35ErBlxHpfxcjCqwP4z1KO8kMbld6" +
            "I0zTHBjvBBRGKlhG4D7jzIYksCw7gGYpvhTl6+QM2jsW9Vtzbk1hgxN7uDPhAVfg" +
            "7wo4Zw8oKXtFmEqbQQJBAOnp5AF6yJ9t8NeroqgxgndgtaoW0GthHgrFF2Z/I0Ee" +
            "LfZn7tzFSA7dvbMMG6ygxbk7Ny2wAjKIZonsmAjtM18CQQDKSY0D/WfnIke3kk0m" +
            "P9NLXAuCJvMJaHLQl7U0zIH4A5q6fx54MAZk1yuIzoVGnoE2VZXboWJBnDQ/Fnxh" +
            "w3zJAkEAnj1iyHl2pRvr1QrAY8Xye63J14HNhwbRGvoQBX+2qsOu1kWjOmifgacS" +
            "QMDNK/ArMk7T2i16nxLVQzLx+v/0QwJANubNcgbFu3KPWmBHthjehPZ/XRyrG6OQ" +
            "fdKe6KyUnbaEuRclMuN96MKJW0EJ5QfB8/g4ivp7C2mUuIamzXXcGQJBAKNsWCGi" +
            "GfnU7DF4Q372/aIFPvJr6mIompKEqPl663sQJNW6EgC2iAlnCctbwHCH0aZ5/Syr" +
            "0LeB/XTW7ewXq50="

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        try {
            doAsync {
                val str = "我是原文"
                var text = "<font color=#ff0000>原文:</font> $str<br/>"


                val cipher = Cipher.getInstance("RSA")  // 确定算法

                // 格式化私钥
                val pkcs8EncodedKeySpec = PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyStr))
                var keyFactory = KeyFactory.getInstance("RSA")
                val privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec)

                // 格式化公钥
                val x509EncodedKeySpec = X509EncodedKeySpec(Base64.decodeBase64(publicKeyStr))
                keyFactory = KeyFactory.getInstance("RSA")
                val publicKey = keyFactory.generatePublic(x509EncodedKeySpec)
                text += " <strong><font color=#ff0000>私钥解密 公钥解密</font></strong><br/>"

                //私钥加密
                cipher.init(Cipher.ENCRYPT_MODE, privateKey)
                var result = cipher.doFinal(str.toByteArray())
                var encodeStr = Base64.encodeBase64String(result)

                text = "$text<br/>私钥加密:<br/>$encodeStr<br/>"

                //公钥解密
                cipher.init(Cipher.DECRYPT_MODE, publicKey);
                var decodeStr = String(cipher.doFinal(result))

                text = "$text<br/>公钥解密:<br/>$decodeStr<br/><br/>"

                text += " <strong><font color=#ff0000>公钥解密 私钥解密</font></strong><br/>"

                //公钥加密
                cipher.init(Cipher.ENCRYPT_MODE, publicKey)
                result = cipher.doFinal(str.toByteArray())

                encodeStr = Base64.encodeBase64String(result)
                text = "$text<br/>公钥加密:<br/>$encodeStr<br/>"

                //私钥解密
                cipher.init(Cipher.DECRYPT_MODE, privateKey);
                decodeStr = String(cipher.doFinal(result))

                text = "$text<br/>私钥解密:<br/>$decodeStr<br/>\n"


                runOnUiThread { textView11?.text = Html.fromHtml(text) }

            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
}


效果如图:


ssss

相关文章

网友评论

      本文标题:Android端使用RSA加密解密

      本文链接:https://www.haomeiwen.com/subject/hkanbqtx.html