首页 > 解决方案 > 将 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)

标签: androidrealmandroid-keystoreandroid-securityrealm-java

解决方案


在/security.stackexchange.com上遇到了这个答案

TL:博士

传统上,RSA 密钥的“长度”是模数的长度(以位为单位)。当说 RSA 密钥的长度为“2048”时,它实际上意味着模值介于 22047 和 22048 之间。由于给定对的公钥和私钥共享相同的模数,因此根据定义,它们也具有相同的模数“长度”。理论上,2048 位模数可以恰好适合 256 个字节(因为 256*8 = 2048),但您需要更多字节来编码其他值。


推荐阅读