java 接口设计 rsa,Java學習筆記1:java后台寫接口,使用AES和RSA

1.獲取簽名后的String,生成簽名串后,下面使用MD5進行簽名串的加密,大家可以改成使用RSA或者AES

package com.util;

import java.io.UnsupportedEncodingException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Map;

/**

* 簽名工具類

* @author Administrator

*

*/

public class SignUtils {

/**

* 生成簽名

* @param req 需要簽名的要素

* @return 簽名結果字符串

*/

public static String buildSignature(Map params, String securityKey) {

String prestr = createSignString(params);

prestr = prestr + "&" + MD5Utils.md5(securityKey);

return MD5Utils.md5(prestr);

}

public static String createSignString(Map params) {

List keys = new ArrayList(params.keySet());

Collections.sort(keys);

StringBuilder sb = new StringBuilder();

for (int i = 0; i < keys.size(); i++) {

String key = keys.get(i);

String value = params.get(key);

if (value == null) continue;

sb.append(key);

sb.append("=");

sb.append(value);

sb.append("&");

}

return sb.toString().substring(0, sb.length()-1);

}

}

2.RSA與AES加密與解密

package com.util;

import java.util.HashMap;

import java.util.Map;

public class Test1 {

public static void main(String[] args) {

// TODO Auto-generated method stub

//AES加密解密, 一定要16位

/*String AESKey = "lzc1016961351mmm";

String encryptStr = AES.encryptToBase64("我愛你中國", AESKey);

System.out.println(encryptStr);

String str = AES.decryptFromBase64(encryptStr, AESKey);

System.out.println(str);

*/

try {

Map keys = RSA.generateKeyPair();

Map map = new HashMap();

String publicKey = keys.get("publicKey");

String privateKey = keys.get("privateKey");

String encryptStr = RSA.encrypt("*(sdf我愛你中國123434dfdasfds", publicKey);

System.out.println(encryptStr);

String str = RSA.decrypt(encryptStr, privateKey);

System.out.println(str);

String str1 = RSA.decrypt(encryptStr, privateKey);

System.out.println(str);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

3.關於寫接口的一些想法

對接接口需要用到AES和RSA加密

以下提供一種接口的寫法

使用httppost 請求到后台

后台接口兩個參數

data:   使用RSA公鑰加密的json數據

encryptkey: AES密鑰密文

使用AES解密encryptkey, 得到解密的RSA的privatekey,然后用privatekey去解密data字段

解密之后的到的就是json數據,解密后的數據再和sign簽名判斷是否相等,如果相等則通過驗簽收,sign方法可以根據上面方法修改成自己合適的

RSA的publickey是事先生成的,用於加密,加密和解密的可以根據上面的方法進行操作,由於版權問題,這里RSA加密和解密不給予提供,請諒解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值