问题描述
我正在尝试使用 jpgpj 库使用架构加密 avro 消息,它在加密时给了我一个例外:
import SwiftUI
struct ContentView: View {
@State private var array: Array<String> = ["a","a","b","c","c"]
var body: some View {
List(array) { item in
Text(item)
}
Button("remove last item") {
if array.count > 0 { array.remove(at: array.count - 1) }
}
.foregroundColor(Color.red)
.font(Font.body.weight(Font.Weight.bold))
}
}
extension String: Identifiable {
public var id: UUID {
get {
return UUID()
}
}
}
我使用以下命令生成密钥对:
Exception in thread "main" org.bouncycastle.openpgp.PGPException: no suitable signing key found
at org.c02e.jpgpj.Encryptor.sign(Encryptor.java:982)
at org.c02e.jpgpj.Encryptor.prepareCiphertextoutputStream(Encryptor.java:773)
at org.c02e.jpgpj.Encryptor.encrypt(Encryptor.java:691)
at org.c02e.jpgpj.Encryptor.encrypt(Encryptor.java:662)
at avro.EncryptPayload$.main(EncryptPayload.scala:40)
at avro.EncryptPayload.main(EncryptPayload.scala)
然后,我将 public-key.gpg 文件复制到带有此 code 的项目中的 src/main/resources 并且发生了异常。例外很明显,我可以在来源中看到它。 这不是找不到文件的问题,而是说公钥不能用作签署消息的密钥的问题,这让我很困惑。我做错了什么?
解决方法
当我改变这一行时问题就消失了:
encryptor.setSigningAlgorithm(HashingAlgorithm.SHA256)
到这一行:
encryptor.setSigningAlgorithm(HashingAlgorithm.Unsigned)
编辑
我与代码共享 gist