J'essaie de mettre en œuvre un cryptage RSA dans Java et PHP, mais je ne peux pas sembler avoir PHP pour reconnaître mes clés publiques / privées Java. Voici le code Java pour encoder / décoder les clés publiques et privées:
public static byte[] EncodePublicKey(PublicKey _publickey) throws Exception
{
return _publickey.getEncoded();
}
public static PublicKey DecodePublicKey(byte[] _encodedkey) throws Exception
{
KeyFactory fac = KeyFactory.getInstance("RSA");
X509EncodedKeySpec encodedKey = new X509EncodedKeySpec(_encodedkey);
return fac.generatePublic(encodedKey);
}
public static byte[] EncodePrivateKey(PrivateKey _privatekey) throws Exception
{
return _privatekey.getEncoded();
}
public static PrivateKey DecodePrivateKey(byte[] _encodedkey) throws Exception
{
KeyFactory fac = KeyFactory.getInstance("RSA");
PKCS8EncodedKeySpec encodedKey = new PKCS8EncodedKeySpec(_encodedkey);
return fac.generatePrivate(encodedKey);
}
4 Réponses :
Vous devez convertir le format binaire (DER) de Java en PEM pour OpenSSL (et les liaisons PHP). Vous pouvez tester vos fichiers de clés Java à l'aide de la ligne de commande OpenSSL en spécifiant l'option Pour plus d'informations sur l'utilisation des touches OpenSSL Java, Consultez ce lien . p> p> -Inform der code> sur la ligne de commande.
Comment puis-je continuer à convertir l'encodage ASN.1 au format PEM dans PHP?
Fonctionne comme un charme. :) Très appréciée. Merci!
Les fonctions PHP nécessitent des touches codées PEM. Il est trivial de convertir des touches codées DER en PEM.
Voici mon code pour convertir la clé privée de PKCS n ° 8 sur PEM, P>
function pkcs8_to_pem($der) {
static $BEGIN_MARKER = "-----BEGIN PRIVATE KEY-----";
static $END_MARKER = "-----END PRIVATE KEY-----";
$value = base64_encode($der);
$pem = $BEGIN_MARKER . "\n";
$pem .= chunk_split($value, 64, "\n");
$pem .= $END_MARKER . "\n";
return $pem;
}
http://code.google.com/p/simplersalibrary/ est un simple Outil, si vous voulez crypter quelque chose dans Java et déchiffrer en PHP ou en chiffreur en Java et en déchiffrer en PHP, Simplersa peut également générer les fichiers PEM pour PHP. P>
Vous pouvez également essayer d'utiliser Castlecrypt, ce qui permet un cryptage RSA facile à utiliser en Java et PHP: https: / /github.com/wessnerj/castlecrypt
Pour la génération de la clé, vous voudrez peut-être l'essayer avec OpenSSL: P>
openssl genrsa -out privateKey.pem 2048 openssl pkcs8 -topk8 -nocrypt -in privateKey.pem -outform der -out privateKey.der openssl rsa -in privateKey.pem -pubout -outform PEM -out publicKey.pem openssl rsa -in privateKey.pem -pubout -outform DER -out publicKey.der