W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
非對稱加密。
加密與解密過程分別放置在客戶端與服務(wù)端,私鑰也放在服務(wù)端(若私鑰放在客戶端,容易泄露而導(dǎo)致安全問題)。
Page({
data: {
inputValue: '',
outputValue: '',
},
onInput: function (e) {
this.setData({ inputValue: e.detail.value });
},
onEncrypt: function () {
my.rsa({
action: 'encrypt',
text: this.data.outputValue,
// 設(shè)置公鑰,需替換你自己的公鑰
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,
// 設(shè)置私鑰,需替換你自己的私鑰
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,
});
},
});
},
});
private static void testJieMi(String miwen, String privateKeyStr) {
// 將Base64編碼后的私鑰轉(zhuǎn)換成PrivateKey對象
// 加密后的內(nèi)容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編碼后的公鑰轉(zhuǎn)換成PublicKey對象
PublicKey publicKey = RSAUtil.string2PublicKey(publicKeyStr);
// 用公鑰加密
byte[] publicEncrypt = RSAUtil.publicEncrypt(message.getBytes(), publicKey);
// 加密后的內(nèi)容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 | 否 | 調(diào)用成功的回調(diào)函數(shù)。 |
fail | Function | 否 | 調(diào)用失敗的回調(diào)函數(shù)。 |
complete | Function | 否 | 調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行)。 |
入?yún)?Object 類型,屬性如下:
屬性 | 類型 | 描述 |
---|---|---|
text | String | 經(jīng)過處理過后得到的文本,加密為 Base64編碼文本,解密為原始文本。 |
入?yún)?Object 類型,屬性如下:
屬性 | 類型 | 描述 |
---|---|---|
error | String | 錯誤碼 |
errorMessage | String | 錯誤信息 |
錯誤碼 | 描述 | 解決方案 |
---|---|---|
10 | 參數(shù)錯誤 | 建議檢查參數(shù)是否正確。 |
11 | key 錯誤 | 建議檢查 key 是否正確。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: