PHP代码:

$privateKeyFilePath = '-----BEGIN RSA PRIVATE KEY-----

MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJDArkki2k3+xhze

v5emztqFtUhOzVlSveQ5dOLC4nNlLg8r81I9xBaXB7m4rb6lVjLgUuAXKUJ8y7yH

eE02s695cR/ZD0fierrMKMkmTFZIqOVYchn15N8EPz5e8WFirtP+Kaol4jDOaLCP

CSIs8QrQE6kEC7WDBi2/0mCkNI7PAgMBAAECgYB0oZuMODXXZDGyb1PGWFQRRGyl

n0Db+MwiCJ2CXG5jdiHffZUnLbdCUFycKw5rLwK+KXr9LgxDkxQBitHGvQ2XXO8w

v/2MQT658Eb49iQxZfuuhFFN8YIJZ4oFVyQQWXyCRAopyi/B0Eh6LTTTPjC/udPX

MoC0vSZl93Db8KPdyQJBANLPOnmyQmua6za/fFhWl13lsa+Ko73LhGi6dpiBjdpw

j0hp6NV/7yGCvHJFUr0hc9p5/lVJHkeAS/QtxF1IqXMCQQCvyGVL5uXj4didkO50

4HDgpPAgdROCZ6KrrNIf+RnCDn9Ffa1oA+n5cnno4trZVAYLU4yzZ63tQ/Z81ZfS

+h41AkBPXuyyUzaE0zBKTbBghkG5fbj30egyloTE9aefZe/l1clsx0t9zwxW/qU7

FPTA9u5qzNHAhKYc36Y5Sl4LjUcXAkBX50mopEXQKI+Pc/ubHOW1oSWnxYRFERhK

63iEnqgf3+oLUSbXPiXSJUoLiO5SAe+n2FcjHDTg0ry/fnyW95cFAkEAyllpaHTu

V5FPt6J5wZcEUbZoZsxYGmfUEg6HUE8BbGgRWwaem94p668ILaqGtxGKLKgbWoTM

Z8ZM+5cR/+C+yA==

-----END RSA PRIVATE KEY-----';

/**

* 公钥文件的路径

*/

$publicKeyFilePath = '-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQwK5JItpN/sYc3r+Xps7ahbVI

Ts1ZUr3kOXTiwuJzZS4PK/NSPcQWlwe5uK2+pVYy4FLgFylCfMu8h3hNNrOveXEf

2Q9H4nq6zCjJJkxWSKjlWHIZ9eTfBD8+XvFhYq7T/imqJeIwzmiwjwkiLPEK0BOp

BAu1gwYtv9JgpDSOzwIDAQAB

-----END PUBLIC KEY-----';

extension_loaded('openssl') or die('php需要openssl扩展支持');

/**

* 生成Resource类型的密钥,如果密钥文件内容被破坏,openssl_pkey_get_private函数返回false

*/

$privateKey =openssl_pkey_get_private($privateKeyFilePath);

/**

* 生成Resource类型的公钥,如果公钥文件内容被破坏,openssl_pkey_get_public函数返回false

*/

$publicKey =openssl_pkey_get_public($publicKeyFilePath);

($privateKey) or die('密钥不可用');

($publicKey) or die('公钥不可用');

/**

* 原数据

*/

$originalData = 'test';

/**

* 加密以后的数据,用于在网路上传输

*/

$encryptData = '';

echo '原数据为:', $originalData, '
';

///用公钥加密

if (openssl_public_encrypt($originalData,$encryptData, $publicKey)) {

//Uu3FzghBLs3dnWEO8Gc7p1QGf2MH+VMddUk0ui2TQlcKbr+DMKRJfsTiQYh5N9Bu+kEyKG72f90l34rNJAkLruZJtuqRTfZ8vnG2P1UEkW+7063GVPz6o6mfrL46FN4j0mpIP6sAshvvUAGudlVTde2KT7bI8E0EqZU9D7WRKCI=

echo '加密成功,加密后数据(base64_encode后)为:', base64_encode($encryptData), '
';

echo '加密成功,加密后数据(bin2hex后)为:',bin2hex($encryptData), '
';

} else {

die('加密失败');

}

// $secret = 'iZEksazCdYhkbqM2kRMo9E+oSFCYnTkB0JGOMN5m3ZeJr8ShtrifvHMWQG605pMvO31oalcU8P8jzkEMLyCV0/ATc2AEF6cxwRujl315tB5RClq8aMYhcAlfOTZeuQHJPg3tM98snEVTrVsRJzr94VYcA394yyln+j+44+3wNaWMNSr+7H/H33XmFN9TcE70Jt1AC/PYNLr0an2DNwBtiDt4ttPfHF2iYJqtrH/K/UNxHd5uakpMKX7QRqEYq3Z6d6dCtlv76Ex2SVTWdNofqu7GbMMemo5hEfRf80q8O0o0Kqn3o6cQ13X7aWY/1pGhkfeoC0yauZx4wKrpdmjgd4lCHDlCVgwLiUdG/6U+ckd4CGu7cQtjfy7UKwOJkCqrB+AGbdjaIyiBGdkji39zf2eGJHRzXCVvN3nyRd/AQlwX0sDsICS+R26SNkDmKo8aWBQspzLUkPMZWGyFRy8cRnILYJwpr4Qhq7JKajHQkaAG6RLQ91NsSEhOGMunAQFver4hsk22NRAY5NugT8qOsUarALucT5fwlpDoOEF4lGpF4uLmTGSPMBrptRrPgWSdGs0p/G/pSx9INOgd5X5e/F12GLqIfZIA6JVyQL4E5AQ0S+aZPNdyEiL1Ufz5A5LcILue/PES5ot45LjynTLWZ2lMRiohBeAsEU57j4KCn8QTTiDdRss+qM7UaCrILUrE6C5/PMPOVHxvICsDYmTLY7nfY2M5cH/wPpuPzcbhWlLltk3wmgf34BugVa2mjq8l5x9EoWv+YDXBWqsegL3DpfhMfvAC2Lk1dsiXPpNLgaX+oY6Xy+0T9paCIWs1ZV8A7M2eNWZPMOOiXOZx+l4TTHNrsQCrUTQzCOu+prmerv6QMEKri+X0hfNmBMl9qodlLo3BI1JtDql/g/2qq1Aq8ETkZ9UznLETxwvvqosZjiobhHnKvlH9kaEjsK5XwGX9q4+yJVNAY5IB5DL3uFdnmnUr7GT1o/+8scJQ0WunBWroUYqpb1hr2p+RvzS8PgpA';

// $encryptData = base64_decode($secret);

// var_dump(strlen($encryptData));

///用私钥解密

$decryptData ='';

$crypto = '';

foreach (str_split($encryptData, 128) as $chunk) {

openssl_private_decrypt($chunk,$decryptData, $privateKey);

$crypto .= $decryptData;

}

echo '解密成功,解密后数据为:',$crypto, '
';

// if (openssl_private_decrypt($encryptData,$decryptData, $privateKey)) {

// echo '解密成功,解密后数据为:',$decryptData, '
';

// } else {

// die('解密成功');

// }

?>

JAVA代码:

public static void main(String[] args) throws Exception {

String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQwK5JItpN/sYc3r+Xps7ahbVITs1ZUr3kOXTiwuJzZS4PK/NSPcQWlwe5uK2+pVYy4FLgFylCfMu8h3hNNrOveXEf2Q9H4nq6zCjJJkxWSKjlWHIZ9eTfBD8+XvFhYq7T/imqJeIwzmiwjwkiLPEK0BOpBAu1gwYtv9JgpDSOzwIDAQAB";

String test = encrypt("test", getPublicKey(publicKey));

System.out.println(test);

String privateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJDArkki2k3+xhzev5emztqFtUhOzVlSveQ5dOLC4nNlLg8r81I9xBaXB7m4rb6lVjLgUuAXKUJ8y7yHeE02s695cR/ZD0fierrMKMkmTFZIqOVYchn15N8EPz5e8WFirtP+Kaol4jDOaLCPCSIs8QrQE6kEC7WDBi2/0mCkNI7PAgMBAAECgYB0oZuMODXXZDGyb1PGWFQRRGyln0Db+MwiCJ2CXG5jdiHffZUnLbdCUFycKw5rLwK+KXr9LgxDkxQBitHGvQ2XXO8wv/2MQT658Eb49iQxZfuuhFFN8YIJZ4oFVyQQWXyCRAopyi/B0Eh6LTTTPjC/udPXMoC0vSZl93Db8KPdyQJBANLPOnmyQmua6za/fFhWl13lsa+Ko73LhGi6dpiBjdpwj0hp6NV/7yGCvHJFUr0hc9p5/lVJHkeAS/QtxF1IqXMCQQCvyGVL5uXj4didkO504HDgpPAgdROCZ6KrrNIf+RnCDn9Ffa1oA+n5cnno4trZVAYLU4yzZ63tQ/Z81ZfS+h41AkBPXuyyUzaE0zBKTbBghkG5fbj30egyloTE9aefZe/l1clsx0t9zwxW/qU7FPTA9u5qzNHAhKYc36Y5Sl4LjUcXAkBX50mopEXQKI+Pc/ubHOW1oSWnxYRFERhK63iEnqgf3+oLUSbXPiXSJUoLiO5SAe+n2FcjHDTg0ry/fnyW95cFAkEAyllpaHTuV5FPt6J5wZcEUbZoZsxYGmfUEg6HUE8BbGgRWwaem94p668ILaqGtxGKLKgbWoTMZ8ZM+5cR/+C+yA==";

String decrypt = decrypt(test, getPrivateKey(privateKey));

System.out.println(decrypt);

}

/**

* RSA解密

*

* @param data

* 待解密数据

* @param privateKey

* 私钥

* @return

*/

public static String decrypt(String data, PrivateKey privateKey) throws Exception {

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

cipher.init(Cipher.DECRYPT_MODE, privateKey);

byte[] dataBytes = Base64.decodeBase64(data);

int inputLen = dataBytes.length;

ByteArrayOutputStream out = new ByteArrayOutputStream();

int offset = 0;

byte[] cache;

int i = 0;

// 对数据分段解密

while (inputLen - offset > 0) {

if (inputLen - offset > MAX_DECRYPT_BLOCK) {

cache = cipher.doFinal(dataBytes, offset, MAX_DECRYPT_BLOCK);

} else {

cache = cipher.doFinal(dataBytes, offset, inputLen - offset);

}

out.write(cache, 0, cache.length);

i++;

offset = i * MAX_DECRYPT_BLOCK;

}

byte[] decryptedData = out.toByteArray();

out.close();

// 解密后的内容

return new String(decryptedData, "UTF-8");

}

/**

* RSA加密

*

* @param data

* 待加密数据

* @param publicKey

* 公钥

* @return

*/

public static String encrypt(String data, PublicKey publicKey) throws Exception {

Cipher cipher = Cipher.getInstance("RSA");

cipher.init(Cipher.ENCRYPT_MODE, publicKey);

int inputLen = data.getBytes().length;

ByteArrayOutputStream out = new ByteArrayOutputStream();

int offset = 0;

byte[] cache;

int i = 0;

// 对数据分段加密

while (inputLen - offset > 0) {

if (inputLen - offset > MAX_ENCRYPT_BLOCK) {

cache = cipher.doFinal(data.getBytes(), offset, MAX_ENCRYPT_BLOCK);

} else {

cache = cipher.doFinal(data.getBytes(), offset, inputLen - offset);

}

out.write(cache, 0, cache.length);

i++;

offset = i * MAX_ENCRYPT_BLOCK;

}

byte[] encryptedData = out.toByteArray();

out.close();

// 获取加密内容使用base64进行编码,并以UTF-8为标准转化成字符串

// 加密后的字符串

return new String(Base64.encodeBase64String(encryptedData));

}

在linux上生成privateKey,

openssl genrsa -out rsa_private_key.pem 1024

根据privateKey生成publicKey

openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout

将java私钥或公钥转换成pem格式,php代码:

class entry {

var $pub_key;

function redPukey()

{

$pubKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJDArkki2k3+xhzev5emztqFtUhOzVlSveQ5dOLC4nNlLg8r81I9xBaXB7m4rb6lVjLgUuAXKUJ8y7yHeE02s695cR/ZD0fierrMKMkmTFZIqOVYchn15N8EPz5e8WFirtP+Kaol4jDOaLCPCSIs8QrQE6kEC7WDBi2/0mCkNI7PAgMBAAECgYB0oZuMODXXZDGyb1PGWFQRRGyln0Db+MwiCJ2CXG5jdiHffZUnLbdCUFycKw5rLwK+KXr9LgxDkxQBitHGvQ2XXO8wv/2MQT658Eb49iQxZfuuhFFN8YIJZ4oFVyQQWXyCRAopyi/B0Eh6LTTTPjC/udPXMoC0vSZl93Db8KPdyQJBANLPOnmyQmua6za/fFhWl13lsa+Ko73LhGi6dpiBjdpwj0hp6NV/7yGCvHJFUr0hc9p5/lVJHkeAS/QtxF1IqXMCQQCvyGVL5uXj4didkO504HDgpPAgdROCZ6KrrNIf+RnCDn9Ffa1oA+n5cnno4trZVAYLU4yzZ63tQ/Z81ZfS+h41AkBPXuyyUzaE0zBKTbBghkG5fbj30egyloTE9aefZe/l1clsx0t9zwxW/qU7FPTA9u5qzNHAhKYc36Y5Sl4LjUcXAkBX50mopEXQKI+Pc/ubHOW1oSWnxYRFERhK63iEnqgf3+oLUSbXPiXSJUoLiO5SAe+n2FcjHDTg0ry/fnyW95cFAkEAyllpaHTuV5FPt6J5wZcEUbZoZsxYGmfUEg6HUE8BbGgRWwaem94p668ILaqGtxGKLKgbWoTMZ8ZM+5cR/+C+yA==";

$pem = chunk_split($pubKey,64,"\n");//转换为pem格式的公钥

$pem = "-----BEGIN RSA PRIVATE KEY-----\n".$pem."-----END RSA PRIVATE KEY-----\n";

var_dump($pem);

$publicKey = openssl_pkey_get_public($pem);

return $publicKey;

}

}

$entry = new entry();

$entry->redPukey();

?>

rsa/ecb/pkcs1padding php,PHPJAVA RSA/ECB/PKCS1Padding 加密解密相关推荐

  1. java和c 的rsa加密算法_RSA算法签名技术Java与C++统一(加密解密结果一样)

    RSA算法签名技术Java与C++统一 (加密解密结果一样) 源代码下载地址:http://www.doczj.com/doc/64f44a94a0116c175f0e484d.html/produc ...

  2. C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

    一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应 ...

  3. [crypto]-52-python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用

    环境: 在ubuntu14.04下,记得安装:sudo pip3 install pycrypto 代码示例1: =========================== import base64 f ...

  4. delphi7aes加密解密与java互转_跨语言(java vs python vs nodejs)的RSA加解密问题探讨

    多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...

  5. node 加密解密模块_跨语言(java vs python vs nodejs)的RSA加解密问题探讨

    多次被问到这样的问题: java服务端的rsa加密操作已经完成,返回一个16进制的字符串给python平台,但是在python进行私钥解密的时候发现行不通.... 前端python加密,后端用java ...

  6. PHP RSA加密解密

    今天我来说下如何使用RSA方式进行加密解密 一.生成公钥和私钥: 使用OpenSSL就可以,一般Linux和mac有自带的:windows的可自行安装: 通过如下命令生成: 注: RSA非对称加密内容 ...

  7. 常用加密解密算法【RSA、AES、DES、MD5】介绍和使用

    为了防止我们的数据泄露,我们往往会对数据进行加密,特别是敏感数据,我们要求的安全性更高.下面将介绍几种常用的加密算法使用.这些算法的加密对象都是基于二进制数据,如果要加密字符串就使用统一编码(如:ut ...

  8. 非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例

    RSA算法,在1977年由Ron Rivest.Adi Shamirh和LenAdleman,在美国的麻省理工学院开发完成.这个算法的名字,来源于三位开发者的名字.RSA已经成为公钥数据加密标准. R ...

  9. [crypto]-53-openssl命令行的使用(aes/rsa签名校验/rsa加密解密/hmac)

    常用技巧 如何编写一个二进制规律性的文件, 比如你可以编写一个"0123456789abcdef"的文本文件,记得删除换行符然后用ultraedit打开,ctrl+H就可以看到二进 ...

最新文章

  1. 艾宾浩斯记忆表格excel_好的记忆方法是一切学习的关键(艾宾浩斯记忆法)
  2. 使用caffe训练faster-rcnn时遇到的问题总结
  3. jena fuseki RDF应用
  4. 如何使用SAP UI5 SDK网站查询指定控件的属性如何使用
  5. firebird 3.0 开发者指南_11月19日召开 2020 vivo开发者大会报名正式开启
  6. html5 markdown,Markdown常用语法
  7. 使用charles 抓取手机上的操作
  8. 特斯拉工程师当UP主评测自动驾驶,结果被公司开除
  9. python从入门到精通需要多久--零基础学Python,从入门到精通需要多长时间
  10. 二叉树三种遍历非递归算法
  11. Flash学习资源汇编
  12. Java调用ffmepg+mencoder视频格式转换(*)
  13. 线代 | 矩阵的迹 向量内积如何转化为迹
  14. 与android虚拟机传输文件,android 在本机和虚拟机设备之间复制文件
  15. python和按键精灵自动化测试_自动化测试程序和按键精灵
  16. 通过改变电脑的某些设置来呵护我们的眼睛
  17. 大数据治理的五个核心要素
  18. SpringBoot再回首:SpringBoot之Servlet用法
  19. python练习7——PTA
  20. java 验证码_java实现简单的验证码功能

热门文章

  1. FreeSWITCH权威指南 -- 1.PSTN与VoIP基础(笔记)
  2. 为什么程序员面试官总喜欢问你有什么技术亮点?
  3. python模拟seo快排vps点击代码实操
  4. 大数据之hive:hive分桶表
  5. java版地图源码_TreeMap就这么简单【源码剖析】
  6. 2018保研夏令营调研笔记
  7. fedora 27字体美化达到ubuntu级别
  8. Oracle常见sql语句练习及答案(经典题目,方便练习)
  9. 读取服务器光模块信息,如何使用MIB读取光模块的收发光功率
  10. Kafka牛逼在哪里?