Android RSA 加密

Android RSA 加密没想到被Android里的RSA加密折腾了几个小时,主要还是自己对RSA加密的原理不了解,然后网上相关的资料也少。使用AndroidUtilCode工具类中的`EncryptUtils.encryptRSA()`加密后的数据怎么也不对,后来自己找了段加密代码,才总算是可以了,这里记录一下。首先我们需要先生成一个RSA的公钥和私钥。

大家好,又见面了,我是你们的朋友全栈君。

没想到被Android里的RSA加密折腾了几个小时,主要还是自己对RSA加密的原理不了解,然后网上相关的资料也少。
使用AndroidUtilCode工具类中的EncryptUtils.encryptRSA()加密后的数据怎么也不对,后来自己找了段加密代码,才总算是可以了,这里记录一下。

首先我们需要先 生成一个RSA的公钥和私钥。

RSA加密公钥

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOCSZxJyD9BCPF+E0AwT1v/qdv
lMhLKkNbnp1BIrh9bnfuv15mULugWq7ARtWtppZVLHu7H0No6vZQRN66BY3wWbll
NPZP2Qg2xV3ubXcDa5CtfdmDbPeN+Ol4s97Gzcn7VL1+3NXzMRLAm1E64hqkrMfE
xpr5Okdai0szIb/EvwIDAQAB
-----END PUBLIC KEY-----

RSA加密私钥

-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAM4JJnEnIP0EI8X4
TQDBPW/+p2+UyEsqQ1uenUEiuH1ud+6/XmZQu6BarsBG1a2mllUse7sfQ2jq9lBE
3roFjfBZuWU09k/ZCDbFXe5tdwNrkK192YNs94346Xiz3sbNyftUvX7c1fMxEsCb
UTriGqSsx8TGmvk6R1qLSzMhv8S/AgMBAAECgYAK8Y96KSLmbYbc6BBm/tydi0An
fBabb3Y+cpFVuVtlRi3Wn5GLC7S7krV/fwOwgo2vnno/+SwicYB9yPqvlMXyKtl0
kXlcQn6vj+Qaf1EHy35Be4sEysTvVxW7eaHtrbIbQwc51YVUmbwX5sGnLL8579kK
zcQ15K9hpY+gQ9tw0QJBAOx1dvvkOdGIrzBajpGB3V9Yu0Z4MZrl1AihzCZLgTov
3eAWtmDxa6y8ErYRXkZq8dC+H9mnrBHN53Db6Gl1xfcCQQDfEA17x1A2M45z3suk
GbDbTy/u1K64RqsnubJWBXWzY1RO43cqP7Zul7edNgMdYpOGb6w4Z01i65ACcKDg
K6V5AkB7zymEzMRFZUctj0z0/UV3JhOw20BF9a7m8ijdqE06tVN8gQfvjJkvca5u
bHurbVW+Ub6FjZi4HdLgMhToG0WTAkEAw6Zl3Tq+LTxdZ150ybPK/yFezqH3uiQp
/YcQWAkj6rtl+GflXsZRcoFaiOcWJlEPSqxqp3JcWzZ4ststEFLYKQJBAJqFy7HC
5vLOmAMqPzT1BP70MjrCFvJ80jeTIsIqfpJxxtmYthfjtmaM6UWnfDQhdbZ1bFvB
Ywuc/LNp25PThWc=
-----END PRIVATE KEY-----

然后附上RSA加密相关的代码

fun main(){ 
   
	val idCard = "12345678"
	val result = rsaEncode(idCard)
	Log.i("Z-MMM", "result:$result")
}

fun rsaEncode(str: String): String? { 
   
    val publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOCSZxJyD9BCPF+E0AwT1v/qdv
lMhLKkNbnp1BIrh9bnfuv15mULugWq7ARtWtppZVLHu7H0No6vZQRN66BY3wWbll
NPZP2Qg2xV3ubXcDa5CtfdmDbPeN+Ol4s97Gzcn7VL1+3NXzMRLAm1E64hqkrMfE
xpr5Okdai0szIb/EvwIDAQAB"
   var outStr = ""
    try { 
   
        // base64编码的公钥
        val decoded: ByteArray = Base64.decode(publicKey, Base64.DEFAULT)
        val pubKey = KeyFactory.getInstance("RSA")
            .generatePublic(X509EncodedKeySpec(decoded)) as RSAPublicKey
        // RSA加密
        val cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding")
        cipher.init(Cipher.ENCRYPT_MODE, pubKey)
        outStr = Base64.encodeToString(
            cipher.doFinal(str.toByteArray(charset("UTF-8"))),
            Base64.DEFAULT
        )
    } catch (e: Exception) { 
   
        e.printStackTrace()
    }
    return outStr
}

打印的结果

mAHc2ZtZuzDrA295Aw4CpYhctlJA3NeC7xd0BgGRMVSzBL8WRYuxNiDK1CQXuQ7B/3wgqH72CbRw
    GjUndeZf4jIBm7GHj9xOa6GPbDhlTVeH4VAjSoEgxiRzh/0WW2KLFZjs4GCErjpMx+x1U5EMIExV
    91OfiWcHCp72gns5tRo=

ras每次加密的结果都会变

验证加密结果 : 通过该网站我们可以对其进行解密,可以看到解密后的结果是12345678
在这里插入图片描述

感谢 Android RSA加密(Java后台给出公钥)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145729.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【ML】支持向量机(SVM)从入门到放弃再到掌握

    【ML】支持向量机(SVM)从入门到放弃再到掌握朋友,你通过各种不同的途经初次接触支持向量机(SVM)的时候,是不是会觉得这个东西耳熟能详,感觉大家都会,却唯独自己很难理解?每一次你的老板或者同仁让你讲解SVM的时候,你觉得你看过这么多资料,使用过这么多次,讲解应该没有问题,但偏偏在分享的时候结结巴巴,漏洞百出?每一次机器学习相关的面试在问到支持向量机(SVM)的时候,尽管你觉得你都准备好了,可是一次又一次败下阵来,以至于觉得问那些问题…

    2022年6月6日
    29
  • 智能视频识别技术的发展现状「建议收藏」

    智能视频识别技术的发展现状「建议收藏」一、智能视频分析技术应用现状  作为强化视频监控系统应用的一门主要技术——视频智能分析技术,近几年一直得到业界的广泛的关注,其通过对视频内容的分析,将客户所关注的目标从监控背景中分离出来,按照目标的移动方向、速度、时间等参数和某些行为特征进行关联,从而达到主动监控防御的目的。按说这一技术的大规模推广应用对于提高当前治安监控系统的利用效率将起到很大的作用,但实际上却没有得到有效的推广,所谓“叫好不叫座”。笔者认为,造成这一现象的主要原因有以下几个方面:【您可以是大型系统集成商、可以是相关贸易的经销商.

    2022年4月30日
    77
  • Vue的安装及使用快速入门

    Vue的安装及使用快速入门Vue的安装及使用快速入门

    2022年4月22日
    48
  • Unity3d C# Socket 下载文件 (同步到)

    Unity3d C# Socket 下载文件 (同步到)

    2022年1月10日
    58
  • UVALive 3135–Argus+自己定义优先队列的优先规则「建议收藏」

    UVALive 3135–Argus+自己定义优先队列的优先规则

    2022年2月6日
    55
  • vsftp搭建_安装vsftpd

    vsftp搭建_安装vsftpd2016-05-29回答首先在client上建立publickey和privatekey,需要使用ssh-keygen命令[root@localhost.ssh]#ssh-keygen–trsageneratingpublic/privatersakeypair.enterfileinwhichtosavethekey(/root/.ssh/id_rsa…

    2022年9月24日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号