【发布时间】:2021-08-22 18:16:44
【问题描述】:
,嗨,这是我的 .NET 代码:
public static string ExportPublicKeyFile(this RSA rsa)
{
var privateKeyBytes = rsa.ExportRSAPublicKey();
var builder = new StringBuilder("-----BEGIN PUBLIC KEY-----");
var base64PrivateKeyString = Convert.ToBase64String(privateKeyBytes);
var offset = 0;
const int LINE_LENGTH = 64;
for (var i = 0; i < base64PrivateKeyString.Length; ++i)
{
if (i % (LINE_LENGTH - 1) == 0)
builder.Append("\n");
builder.Append(base64PrivateKeyString[i]);
}
if (builder[builder.Length-1] != '\n')
builder.Append("\n");
builder.AppendLine("-----END PUBLIC KEY-----");
return builder.ToString();
}
(外面有一些额外的绒毛可以保存到文件中)
这是我的 Kotlin:
class App {
companion object {
@JvmStatic
fun main(args: Array<String>) {
//App().run()
//val parts = "/ss/dsa".split('/')
//println(parts)
val key = PublicKeyReader.get("C:\\Path\\To\\public.key")
}
object PublicKeyReader {
@kotlin.Throws(Exception::class)
operator fun get(filename: String): PublicKey {
val keyBytes: ByteArray = Files.readAllBytes(Paths.get(filename))
val spec = X509EncodedKeySpec(keyBytes)
val kf: java.security.KeyFactory = java.security.KeyFactory.getInstance("RSA")
return kf.generatePublic(spec)
}
}
}
}
Kotlin 运行的不是 Android,它目前是一个 IntelliJ 应用程序。
运行时出现以下异常:
Caused by: java.security.InvalidKeyException: invalid key format
我尝试手动删除 BEGIN\END 行,但没有帮助。
【问题讨论】: