使用 RSACng 创建 public RSA 密钥:指定的密钥不是该算法的有效大小
Creating public RSA key with RSACng: specified key is not a valid size for this algorithm
我目前正在尝试创建 RSA 加密密钥作为 Tableau 的 Web 服务身份验证的一部分。
我是密码学的菜鸟,不太明白如何生成 public 密钥。
我的模数是 256 字节,指数是 5 字节。
Imports System.Security.Cryptography
Sub CreateKey()
Dim modulus As String= "bba199e30e41fc23078687dfea032c41bc354518115887f3f59c07ee51628c8d354243d2484a7b7278a2b47e92dd5df7c815ad96b5b59f4e202452b5045587d2eca12fb72aba39bb80048f4a9c83fb1e0187e3d73c323ee35f9437828e5abecb0b894dac45217722eb1d6bbab7ff6661b5f728ca1b0be01f138c6f5f1db5a177"
Dim exponent As String = "10001"
Dim key = New RSAParameters
key.Exponent = Encoding.UTF8.GetBytes(exponent)
key.Modulus = Encoding.UTF8.GetBytes(modulus)
Dim rsa As RSACng = New RSACng()
rsa.ImportParameters(key) 'exception thrown here
End Sub
您的模数和指数是十六进制编码的值。执行 Encoding.UTF8.GetBytes(...)
不会进行必要的解码以将字符串转换为正确的 modulus/exponent.
您需要:
- 编写必要的代码将十六进制字符串解码为适当的字节数组,并使用它代替
Encoding.UTF8.GetBytes(...)
(在 Whosebug 和其他地方有很多此类函数的示例)
- 只使用字节数组而不是字符串,例如:
替换:
Dim modulus As String = "bba199..."
与:
Dim modulus As Byte() = New Byte() { &HBB, &HA1, &H99, ...}
我目前正在尝试创建 RSA 加密密钥作为 Tableau 的 Web 服务身份验证的一部分。
我是密码学的菜鸟,不太明白如何生成 public 密钥。
我的模数是 256 字节,指数是 5 字节。
Imports System.Security.Cryptography
Sub CreateKey()
Dim modulus As String= "bba199e30e41fc23078687dfea032c41bc354518115887f3f59c07ee51628c8d354243d2484a7b7278a2b47e92dd5df7c815ad96b5b59f4e202452b5045587d2eca12fb72aba39bb80048f4a9c83fb1e0187e3d73c323ee35f9437828e5abecb0b894dac45217722eb1d6bbab7ff6661b5f728ca1b0be01f138c6f5f1db5a177"
Dim exponent As String = "10001"
Dim key = New RSAParameters
key.Exponent = Encoding.UTF8.GetBytes(exponent)
key.Modulus = Encoding.UTF8.GetBytes(modulus)
Dim rsa As RSACng = New RSACng()
rsa.ImportParameters(key) 'exception thrown here
End Sub
您的模数和指数是十六进制编码的值。执行 Encoding.UTF8.GetBytes(...)
不会进行必要的解码以将字符串转换为正确的 modulus/exponent.
您需要:
- 编写必要的代码将十六进制字符串解码为适当的字节数组,并使用它代替
Encoding.UTF8.GetBytes(...)
(在 Whosebug 和其他地方有很多此类函数的示例) - 只使用字节数组而不是字符串,例如:
替换:
Dim modulus As String = "bba199..."
与:
Dim modulus As Byte() = New Byte() { &HBB, &HA1, &H99, ...}