codecamp

支付宝小程序API 数据安全

非对称加密。

加密与解密过程分别放置在客户端与服务端,私钥也放在服务端(若私钥放在客户端,容易泄露而导致安全问题)。

扫码体验

my.rsa.jpeg

效果示例

数据安全.gif

示例代码

1. 客户端加密、解密

Page({
 data: {
   inputValue: '',
   outputValue: '',
 },
 onInput: function (e) {
   this.setData({ inputValue: e.detail.value });
 },
 onEncrypt: function () {
   my.rsa({
     action: 'encrypt',
     text: this.data.outputValue,
     // 设置公钥,需替换你自己的公钥
     key: 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKmi0dUSVQ04hL6GZGPMFK8+d6\n' +
     'GzulagP27qSUBYxIJfE04KT+OHVeFFb6K+8nWDea5mkmZrIgp022zZVDgdWPNM62\n' +
     '3ouBwHlsfm2ekey8PpQxfXaj8lhM9t8rJlC4FEc0s8Qp7Q5/uYrowQbT9m6t7BFK\n' +
     '3egOO2xOKzLpYSqfbQIDAQAB', 
     success: (result) => {
       this.setData({ outputValue: result.text });
     },
     fail(e) {
       my.alert({
         content: e.errorMessage || e.error,
       });
     },
   });
 },
 onDecrypt: function () {
   my.rsa({
     action: 'decrypt',
     text: this.data.inputValue,
     // 设置私钥,需替换你自己的私钥
     key: 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMqaLR1RJVDTiEvo\n' +
     'ZkY8wUrz53obO6VqA/bupJQFjEgl8TTgpP44dV4UVvor7ydYN5rmaSZmsiCnTbbN\n' +
     'lUOB1Y80zrbei4HAeWx+bZ6R7Lw+lDF9dqPyWEz23ysmULgURzSzxCntDn+5iujB\n' +
     'BtP2bq3sEUrd6A47bE4rMulhKp9tAgMBAAECgYBjsfRLPdfn6v9hou1Y2KKg+F5K\n' +
     'ZsY2AnIK+6l+sTAzfIAx7e0ir7OJZObb2eyn5rAOCB1r6RL0IH+MWaN+gZANNG9g\n' +
     'pXvRgcZzFY0oqdMZDuSJjpMTj7OEUlPyoGncBfvjAg0zdt9QGAG1at9Jr3i0Xr4X\n' +
     '6WrFhtfVlmQUY1VsoQJBAPK2Qj/ClkZNtrSDfoD0j083LcNICqFIIGkNQ+XeuTwl\n' +
     '+Gq4USTyaTOEe68MHluiciQ+QKvRAUd4E1zeZRZ02ikCQQDVscINBPTtTJt1JfAo\n' +
     'wRfTzA0Lvgig136xLLeQXREcgq1lzgkf+tGyUGYoy9BXsV0mOuYAT9ldja4jhJeq\n' +
     'cEulAkEAuSJ5KjV9dyb0RIFAz5C8d8o5KAodwaRIxJkPv5nCZbT45j6t9qbJxDg8\n' +
     'N+vghDlHI4owvl5wwVlAO8iQBy8e8QJBAJe9CVXFV0XJR/n/XnER66FxGzJjVi0f\n' +
     '185nOlFARI5CHG5VxxT2PUCo5mHBl8ctIj+rQvalvGs515VQ6YEVDCECQE3S0AU2\n' +
     'BKyFVNtTpPiTyRUWqig4EbSXwjXdr8iBBJDLsMpdWsq7DCwv/ToBoLg+cQ4Crc5/\n5DChU8P30EjOiEo=',
     success: (result) => {
       this.setData({ outputValue: result.text });
     },
     fail(e) {
       my.alert({
         content: e.errorMessage || e.error,
       });
     },
   });
 },
});

2. 服务端加密、解密

private static void testJieMi(String miwen, String privateKeyStr) {
    // 将Base64编码后的私钥转换成PrivateKey对象
    // 加密后的内容Base64解码
    // 用私钥解密
    try {
        PrivateKey privateKey = RSAUtil.string2PrivateKey(privateKeyStr);
        byte[] base642Byte = RSAUtil.base642Byte(miwen);
        byte[] privateDecrypt = RSAUtil.privateDecrypt(base642Byte, privateKey);
        System.out.println("解密后的明文: " + new String(privateDecrypt));
    } catch (Exception e) {
        e.printStackTrace();
    }
}


private static void testJiaMi(String message, String publicKeyStr) {
    try {
        // 将Base64编码后的公钥转换成PublicKey对象
        PublicKey publicKey = RSAUtil.string2PublicKey(publicKeyStr);
        // 用公钥加密
        byte[] publicEncrypt = RSAUtil.publicEncrypt(message.getBytes(), publicKey);
        // 加密后的内容Base64编码
        String byte2Base64 = RSAUtil.byte2Base64(publicEncrypt);
        System.out.println(byte2Base64);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

入参

Object 类型,属性如下:

属性 类型 必填 描述
action String 使用 RSA 加密还是 RSA 解密。encrypt 为加密。decrypt 为解密。
text String 要处理的文本,加密为原始文本,解密为 Base64 编码格式文本。
key String RSA 密钥。加密使用公钥,解密使用私钥。
success Function 调用成功的回调函数。
fail Function 调用失败的回调函数。
complete Function 调用结束的回调函数(调用成功、失败都会执行)。

success 回调函数

入参为 Object 类型,属性如下:

属性 类型 描述
text String 经过处理过后得到的文本,加密为 Base64编码文本,解密为原始文本。

fail 回调函数

入参为 Object 类型,属性如下:

属性 类型 描述
error String 错误码
errorMessage String 错误信息

错误码

错误码 描述 解决方案
10 参数错误 建议检查参数是否正确。
11 key 错误 建议检查 key 是否正确。
支付宝小程序API 蓝牙
支付宝小程序API 分享
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

支付宝小程序开发文档

支付宝小程序 快速示例

支付宝小程序 小程序快速示例

支付宝小程序 框架

支付宝小程序 组件

支付宝小程序组件 基础组件

支付宝小程序组件 无障碍访问

支付宝小程序 扩展组件

支付宝小程序扩展组件 UI组件

支付宝小程序 API

支付宝小程序 开发工具

支付宝小程序 云服务

支付宝小程序 Serverless

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }