android - 将 RSA 密钥缩短到 64 字节是否安全?
问题描述
我正在尝试加密 Realm DB。密钥应为 64 字节长。我的应用程序的最低 api 级别是 21,所以我只能生成最小长度为 512 字节的 RSA 密钥,依赖于 android sdk 解决方案。将 RSA 密钥缩短到 64 字节是否安全?
KeyStoreHelper.createKeys(application, "REALM_KEY")
RealmConfiguration.Builder()
.name("MyDatabaseName")
.encryptionKey(KeyStoreHelper.getSigningKey("REALM_KEY")!!.take(64).toByteArray())
.schemaVersion(2)
.deleteRealmIfMigrationNeeded()
.build()
.run(Realm::setDefaultConfiguration)
解决方案
在/security.stackexchange.com上遇到了这个答案
TL:博士
传统上,RSA 密钥的“长度”是模数的长度(以位为单位)。当说 RSA 密钥的长度为“2048”时,它实际上意味着模值介于 22047 和 22048 之间。由于给定对的公钥和私钥共享相同的模数,因此根据定义,它们也具有相同的模数“长度”。理论上,2048 位模数可以恰好适合 256 个字节(因为 256*8 = 2048),但您需要更多字节来编码其他值。
推荐阅读
- javascript - 类型 {properties .....} 不可分配给类型 ActionReducer
NGRX 角 12 - python - pyomo中变量之间除法的线性化
- python - 创建/循环通过不同的文件夹和保存文件
- flutter - 在颤振中使用 textFormField
- php - 在 MySQL 中查询单个列中的多个值
- flutter - 如何根据天气条件显示图标。我做了大部分代码,在结束部分需要帮助
- c# - 在 C# 中的选定文本位置之前和之后插入 HTML TAG
- dependency-injection - NestJS 在守卫中注入服务
- arrays - 如何摆脱这个简单的 SwiftUI 错误?
- assembly - 我无法将我的登录密码与我的注册密码进行比较。谁能给我一个解决方案来解决它?