将RSA密钥缩短到64个字节是否安全?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将RSA密钥缩短到64个字节是否安全?相关的知识,希望对你有一定的参考价值。

im正在尝试加密Realm DB。密钥应为64个字节长。我的应用程序的最小api级别是21,因此我只能依靠android sdk解决方案来生成RSA密钥,其最小长度为512字节。将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:DR

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

以上是关于将RSA密钥缩短到64个字节是否安全?的主要内容,如果未能解决你的问题,请参考以下文章

使用密钥大小小于2048的RSA安全密钥创建JWT令牌时出错

DES算法和RSA算法的区别

获取 IllegalBlockSizeException:使用 rsa 时数据不得超过 256 个字节

火山中文编程 -- RSA算法

RSA加密输出大小

如何将原始散列输入获取到 RSA 数字签名?