请教:java证书加密如何转换为php的

  • 这是一个java的加密示例,想请教下如何转换为PHP的形式
private static final String MEAWALLET_PUBLIC_KEY_G1_MODULUS_HEX = "C93CD9E6FC2317DB8977DE7007411A7DFCD57A863E5CE16E4A5F96E7D9CC04579E1FA1853CC88E70BDFAA7EBC36EE2E35A4390477ED8944403CDBBB859A7FB930C70BD46CD15D96EA4D9630526A60BD61854ED04E9DFF021EFF8A44A77E38DB4F3F17CF9BFDE38EF52DCB599908724BFCF643F515728776247B68339D59B504B7650646C1B49D291CE25544E729E981698C53B11279DA0856E5C59AB1144459E05C580BFE2B500BAC36091B77C3379EFFB4F16DD17C1965377A92952E6249C0869B2D10E655C7AA0F70021A172178F37CC50603E778A7820E71D65A7DC9E19922D7158C06FBF37505AE5617C51CB1364F7DF48190E82DB2F536124D0C9AA6B24896C854DF6D47538FB15A0F5827B0992778B9ECEA5B7F07EC6D4EDD124A594F2C2930799B7F926C90622EC0D7CF131141549BC1A1E34D50C9FE4E46582FE36287D304DE8DB846B1B545919CA3BF8ABFADDC07975FB9CBBBC6E678B904848653902970EB61CDB45D3EFF16241700DDEB8A675B1A79C41F01FC18D9981F3E0D3B2274788ACB26BE2B982C1B0EA7CD6D4BE26898ACCCE94F1C61513113A6B80D3B8E9AA3FBAFA7F82A8640EE90C7D0D1E45FC81FA23DA0DD572FBF3D9313EE903CCC6565AFEA4D0A4B1CDEA12C7FFED5E9A41C31DAB6D7A1B5E43883FBDDE9E32B4690FF5BC9470716E2135FE3B92D3F077D6E36AC0F5188E21EF1CC52829994289";
private static final String MEAWALLET_PUBLIC_KEY_G1_EXPONENT_HEX = "010001";
private static final String MEAWALLET_RESPONSE_DATA = "{\n" +
      " \"pan\": \"5541146445656057\",\n" +
      " \"cvv\": \"12\",\n" +
      " \"expiry\": \"2025-05-31\",\n" +
      " \"embossname\": \"John Doe\",\n" +
      "    }";

public static PublicKey buildRsaPublicKey(byte[] modulus, byte[] exponent) throws NoSuchAlgorithmException, InvalidKeySpecException {
    RSAPublicKeySpec spec = new RSAPublicKeySpec(new BigInteger(1, modulus), new BigInteger(1, exponent));
    KeyFactory factory = KeyFactory.getInstance("RSA");
    return factory.generatePublic(spec);
}

private static String encryptSessionKey(byte[] sessionKey, Key publicKey) throws GeneralSecurityException {
    Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-512AndMGF1Padding");
    OAEPParameterSpec oaepParameterSpec = new OAEPParameterSpec(
            "SHA-512", "MGF1", MGF1ParameterSpec.SHA512, PSource.PSpecified.DEFAULT);
    cipher.init(Cipher.ENCRYPT_MODE, publicKey, oaepParameterSpec);
    byte[] encryptedKey = cipher.doFinal(sessionKey);
    return Hex.encodeHexString(encryptedKey);
}

String main() throws Exception {
   // 1. Client generates AES-256 bit one-time session key (SK);
  byte[] oneTimeSessionKey = new byte[256];

  // 2. Encrypt (wrap) the session key with MeaWallet’s Public Key (G1 key);
  PublicKey publicKey = buildRsaPublicKey(
         Hex.decodeHex(MEAWALLET_PUBLIC_KEY_G1_MODULUS_HEX.toCharArray()),
      Hex.decodeHex(MEAWALLET_PUBLIC_KEY_G1_EXPONENT_HEX.toCharArray()));

  String encryptedSecretKeyHex = encryptSessionKey(oneTimeSessionKey, publicKey);
}
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!