我一直试图用一个预先准备好的公钥在Kotlin/Java中加密一个简单的字符串,但是没有成功。

val toEncrypt = "8uUrfe4OcJVUT5lkAP07WKrlGhIlAAwTRwAksBztVaa0hHdZp50EFjOmhrAmFsLQ"

val publicKeyRaw =

"-----BEGIN PUBLIC KEY-----\n" +

"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAW4WQxF2/qzqYwoQlwkkQIjQJ\n" +

"hCm2Hjl00QGkxeO12Py+jytTNYAopHCPpR4SbhE1cFdYx1qjEnFbgeJBxFENyqDg\n" +

"GvBhlwrWQXfI9LdA2M3xbr/4wur7ph1c+aQxOpImzslCtHJ5df7cyFrOTnkY+XYY\n" +

"yGK2Fsnu67FKWjgVvQIDAQAB\n" +

"-----END PUBLIC KEY-----"

val reader = PemReader(StringReader(publicKeyRaw))

val pemObject = reader.readPemObject()

val keyBytes: ByteArray = pemObject.content

val keySpec: EncodedKeySpec = X509EncodedKeySpec(keyBytes)

val keyFactory = KeyFactory.getInstance("RSA")

val key = keyFactory.generatePublic(keySpec)

val cipher = Cipher.getInstance("RSA")

cipher.init(Cipher.ENCRYPT_MODE, key)

val cipherData: ByteArray = cipher.doFinal(toEncrypt.toByteArray())

val encryptedData = Base64.encodeToString(cipherData, Base64.DEFAULT)

Log.e("TAG", "encryptedData: $encryptedData")

下面是我已经尝试过的代码:

/*

val publicKey = publicKeyRaw.replace("\n", "")

.replace("\\n", "")

.replace("-----BEGIN PUBLIC KEY-----", "")

.replace("-----END PUBLIC KEY-----", "")

*/

/*

val pemParser = PEMParser(StringReader(publicKeyRaw))

val pemKeyPair : PEMKeyPair = pemParser.readObject() as PEMKeyPair

val key = JcaPEMKeyConverter().getPublicKey(pemKeyPair.publicKeyInfo)

*/

/*

val keyFactory = KeyFactory.getInstance("RSA")

val keyBytes: ByteArray = Base64.decode(publicKey.toByteArray(), Base64.DEFAULT)

val spec = X509EncodedKeySpec(keyBytes)

val fileGeneratedPublicKey = keyFactory.generatePublic(spec)

val rsaPub: RSAPublicKey = fileGeneratedPublicKey as RSAPublicKey

val publicKeyModulus: BigInteger = rsaPub.modulus

val publicKeyExponent: BigInteger = rsaPub.publicExponent

val keyFactoryAlt = KeyFactory.getInstance("RSA")

val pubKeySpec = RSAPublicKeySpec(publicKeyModulus, publicKeyExponent)

val key = keyFactoryAlt.generatePublic(pubKeySpec) as RSAPublicKey

*/

/*

val reader = PemReader(StringReader(publicKeyRaw))

val pemObject = reader.readPemObject()

val keyBytes: ByteArray = pemObject.content

val keySpec: EncodedKeySpec = X509EncodedKeySpec(keyBytes)

val keyFactory = KeyFactory.getInstance("RSA")

val key = keyFactory.generatePublic(keySpec)

*/

/*

val keyFactory = KeyFactory.getInstance("RSA")

val keyBytes: ByteArray = Base64.decode(publicKey.toByteArray(), Base64.DEFAULT)

val spec = X509EncodedKeySpec(keyBytes)

val fileGeneratedPublicKey = keyFactory.generatePublic(spec)

val rsaPub: RSAPublicKey = fileGeneratedPublicKey as RSAPublicKey

val publicKeyModulus: BigInteger = rsaPub.modulus

val publicKeyExponent: BigInteger = rsaPub.publicExponent

*/

/*

val pemParser = PEMParser(StringReader(publicKey))

val pemKeyPair : PEMKeyPair = pemParser.readObject() as PEMKeyPair

val encoded : ByteArray = pemKeyPair.publicKeyInfo.encoded

val keyFactory = KeyFactory.getInstance("RSA")

val key = keyFactory.generatePublic(PKCS8EncodedKeySpec(encoded))

*/

https://8gwifi.org/rsafunctions.jsp

它显示了一个错误,它是无效的,甚至很难我在那里生成了1024个密钥大小的密钥

我的问题是:如何在Java/Kotlin中使用这种密钥。(您可以在您喜欢的任何站点或提供的站点上生成此类密钥)

-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCAW4WQxF2/qzqYwoQlwkkQIjQJ

hCm2Hjl00QGkxeO12Py+jytTNYAopHCPpR4SbhE1cFdYx1qjEnFbgeJBxFENyqDg

GvBhlwrWQXfI9LdA2M3xbr/4wur7ph1c+aQxOpImzslCtHJ5df7cyFrOTnkY+XYY

yGK2Fsnu67FKWjgVvQIDAQAB

-----END PUBLIC KEY-----

-----BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQCAW4WQxF2/qzqYwoQlwkkQIjQJhCm2Hjl00QGkxeO12Py+jytT

NYAopHCPpR4SbhE1cFdYx1qjEnFbgeJBxFENyqDgGvBhlwrWQXfI9LdA2M3xbr/4

wur7ph1c+aQxOpImzslCtHJ5df7cyFrOTnkY+XYYyGK2Fsnu67FKWjgVvQIDAQAB

AoGActBq8wmTSiVh7s7f4d6d+D6ACZscrHjwsBtcuwUAIOONgO8TtASBNNmSjgsG

kTm/TuvEVfdMjd2rZE0UE/wE+2BOoHTlkVjcKMxoM8KbP/4RBDYlYmWTseiS8zmp

dGwchOzsoWKnhZtnvMrki0f1SdMq4J6g9RncFIrUSKWJ1MECQQDp0s4v+sKo423X

2YSAhB8j1LMPoRlioXSmvVrHGINzGoHt2tRvGqqHaHbd/9QkkhpfeeBcdrv/xOaH

fVH08dnJAkEAjIgFRe6QEDNvm1qCRx6ata047N188MxdHgKHwQBsv48dxqljQrFS

N1yEfXsv6PjLk3DCD8Wi3FTOgftpZVeWVQJBAIpc+TABJkGEW1KYX8Ug6cBtNAxy

my/3NK0abeZUxixNqkcS8BRS5kg8c+KIaYO+hSasWyy8AiGm5XeVm/LjTqkCQEGQ

dGVcF/p3BOsGHyHvNV7tolFgRJpTvl3x8EQrXpFAxDObc6P59tG9aFLi1kdrTA9N

3DxfiMwjBPW/xjxx0MECQBtaSSfTNUYBP64+evjY4HaV9GI5AK83webyF73axXIq

4dyadIdIo78Yaz+f2myX7vyfUlU5iM8QuPMN2KCM3CE=

-----END RSA PRIVATE KEY-----

NO_WRAP: c6nQMEFIrOWsPjB6W00DC6+5xaKm8R79bu8xLz9+yYhDTDepkiQGh0fWpyJuldNJit5CyL9n73TQxMjmtqsZsR/sAGEFjk7EGj8etwFO4MKpZY55BX1MsOVbWbfo2x31uCb/Ssd6nJnu897yCD5Md7xKqbovZP8eoZrvp2azFOk=

DEFAULT:

c6nQMEFIrOWsPjB6W00DC6+5xaKm8R79bu8xLz9+yYhDTDepkiQGh0fWpyJuldNJit5CyL9n73TQ

xMjmtqsZsR/sAGEFjk7EGj8etwFO4MKpZY55BX1MsOVbWbfo2x31uCb/Ssd6nJnu897yCD5Md7xK

qbovZP8eoZrvp2azFOk=

java mjd_RSA加密Java/Kotlin相关推荐

  1. aes sample java,python-AES加密java解密

    我有超过1000个图像和视频需要加密.没什么比这更简单的了,我想用AES,但我搞不懂如何在我的电脑上加密,然后在设备上解密.在 我会用python加密我电脑上的所有项目.然后以随需应变的方式用java ...

  2. java socket 加密,Java socket通信实现DES加密与解密

    DES是对称加密算法的其中一个,用一个密钥进行加密解密数据,安全性能比较低,效率较高,一些不太重要的数据可以使用DES加密算法进行加密解密传输,其他的3DES与AES用法类似. 流程图 首先认真看一下 ...

  3. 【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件签名 )

    文章目录 一.生成 jks 文件 二.签名命令 三.执行结果 四.处理 Unsupported major.minor version 52.0 错误 参考博客 : [Android 安全]DEX 加 ...

  4. 【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件对齐 )

    文章目录 一.apk 对齐操作 二.apk 对齐命令 三.apk 对齐操作代码示例 四.apk 对齐执行结果 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 ...

  5. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )

    文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...

  6. 【Android 安全】DEX 加密 ( Java 工具开发 | 生成 dex 文件 | Java 命令行执行 )

    文章目录 一.生成 dex 文件 二.生成 dex 文件代码示例 三.生成 dex 结果 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | apktool ...

  7. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

  8. 2020 年开发者生态报告:Python超越Java,Go、Kotlin强势崛起

    来源:JetBrains 编辑:白峰.鹏飞.舒婷 本文转自:新智元 近日,JetBrains发布了一份2020年开发者生态报告.该报告是基于19696个开发者的反馈所得到的,目标是完成对2020年开发 ...

  9. JAVA产生加密公钥私钥_Java生成非对称型加密的公钥和私钥

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. import java.io.*; import java.security.*; imp ...

最新文章

  1. transition属性值
  2. 面试官:谈谈你对 Spring AOP 的了解?请加上这些内容,绝对加分!
  3. 如何实现容器透明,内容不透明?
  4. QT学习:基于UDP的网络广播程序
  5. LeetCode 501二叉搜索树中的众数-简单
  6. 什么原因成就了一位优秀的程序员?
  7. 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny) 【转】
  8. JCTF Writeup
  9. 转载---美团外卖系统架构演进与稳定性的探索
  10. JAVA复习总结 一( 详细,干货!)
  11. virtualxposed使用教程_VirtualXposed
  12. 小米MIX 2获取root超级权限的经验
  13. HLS调用vitis库
  14. 小米一面经验分享,面试编程题
  15. 为什么8G运行内存的电脑,开几个WORD文档,运行内存就被占满了,WPS很占用内存吗
  16. 51单片机与ESP8266轻松上手Onenet(二)--onenet AT指令测试
  17. Tiny-DSOD: Lightweight Object Detection for Resource-Restricted Usages
  18. 使用python将csv文件数据可视化
  19. Linux sys文件系统
  20. 如何高效的收集视频作业、收集照片作业,安利一款收集工具/小程序

热门文章

  1. 基于JAVA核酸检查预约系统设计与实现 开题报告
  2. 用Python对用户评论典型意见进行数据挖掘
  3. SAP算号器 license key Developer Access Key 完美解决方案(备用)
  4. 一种全新的指令集架构RISC-V
  5. oracle表空间undotbs1,解决Oracle 表空间UNDOTBS1太大的有关问题
  6. 方舟服务器金币系统,方舟指令快速获取金币方法大揭晓 你也可以变土豪
  7. 基础css动画制作鼠标移入效果
  8. 一起解锁 GIL 的新姿势
  9. 单片机蓝牙模块的使用,以及配置控制舵机的源码
  10. uniapp 提供的手指事件