交换钥匙

来源:互联网 发布:淘宝怎么关注品牌 编辑:程序博客网 时间:2024/04/28 04:00
public static Map<String, String> exchangeKeys(String sid, Map<String, String> keys) throws Exception {
AppSessionHelper.getAppSessionBySid(sid);
int i = 0;
//缓存生成的密钥
Date date = new Date();
date.setTime(date.getTime() + ConfigHelper.getInt(BossConstants.KEYS_TIMEOUT, 864000) * 1000);
ECDHUtil ecdhSecurity = new ECDHUtil();
Map<String, String> resultMap = new HashMap<String, String>();
Map<String, String> secKeyMap = new HashMap<String, String>();
logger.debug("Begin to generate ECDH keys ...");
for(Map.Entry<String, String> entry : keys.entrySet()) {
i++;
byte[] clientPubKey = decodeBase64(entry.getValue());
KeyValue<byte[], byte[]> keypair = ecdhSecurity.genKeyPair(clientPubKey);
//获取交换公钥
resultMap.put(entry.getKey(), encodeBase64(keypair.getKey()));
//获取交换后的密钥
//arraySec.put(encodeBase64(keypair.getValue()));
secKeyMap.put(entry.getKey(), encodeBase64(keypair.getValue()));
//生成密钥对不超过配置数
if(i == ConfigHelper.getInt(BossConstants.EXCHANGE_KEYS_COUNT, 10)) {
break;
}
}
JSONArray arraySec = new JSONArray();
for(Map.Entry<String, String> entry : secKeyMap.entrySet()) {
JSONObject info = new JSONObject();
info.put("id", entry.getKey());
info.put("key", entry.getValue());
arraySec.put(info);
}
logger.info("Generate ECDH keys [" + arraySec.toString() + "]");
//生成的密钥以SID为KEY存储于缓存中
cacheClient.set(CACHE_KEY_PREFIX + sid, arraySec.toString(), date);
return resultMap;
}
0 0
原创粉丝点击