在一个用go和android的聊天项目中,我想使用RSA进行加密
我如何在 go 中创建私钥和公钥以发送到 android ?
我尝试了很多方法,但在 android 中当我想解析公钥 Android 时给出错误
public static PublicKey stringToPublicKeytoserver(String publicKeyString)
{
try {
publicKeyString = publicKeyString.replace("-----BEGIN PUBLIC KEY-----", "");
publicKeyString = publicKeyString.replace("-----END PUBLIC KEY-----", "");
byte[] keyBytes = Base64.decode(publicKeyString, Base64.DEFAULT);
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(RSA);
serveruk=keyFactory.generatePublic(spec);
return serveruk;
} catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
e.printStackTrace();
return null;
}
}
安卓错误
java.security.spec.InvalidKeySpecException:com.android.org.conscrypt.OpenSSLX509CertificateFactory$ParsingException:解析公钥时出错
密钥生成
// Generate RSA Keys
miryanPrivateKey, err := rsa.GenerateKey(rand.Reader, 1024)
fatal(err)
// save PEM file
pemfile, err := os.Create("public.pem")
if err != nil {
fmt.Println(err)
os.Exit(1)
}
//publi := &miryanPrivateKey.PublicKey
// http://golang.org/pkg/encoding/pem/#Block
var pemkey = &pem.Block{
Type : "PUBLIC KEY",
Bytes : x509.MarshalPKCS1PublicKey(&miryanPrivateKey.PublicKey)}
err = pem.Encode(pemfile, pemkey)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
pemfile.Close()
//and even i use function to convert toPKCS8
byt, _:= MarshalPKCS8PublicKey(&miryanPrivateKey.PublicKey)
var pemkey = &pem.Block{
Type : "PUBLIC KEY",
Bytes : byt}
}
我认为我的主要问题是,去使用 pkcs1 但 android 使用 pkcs8
紫衣仙女
相关分类