網頁資料傳輸加密方法(前js+後java)
確保bcprov及codec的jar包存在路徑彙總
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.SecureRandom;
import java.security.Security;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.util.Scanner;
import javax.crypto.Cipher;
import org.apache.commons.codec.binary.Base64;
public class RSAUtils {
private static final KeyPair keyPair = initKey();
private static KeyPair initKey(){
try {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
SecureRandom random = new SecureRandom();
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "BC");
generator.initialize(1024, random);
return generator.generateKeyPair();
}catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 生成public key
* @return
*/
public static String generateBase64PublicKey(){
RSAPublicKey key = (RSAPublicKey)keyPair.getPublic();
return new String(Base64.encodeBase64(key.getEncoded()));
}
/**
* 解密
* @param string
* @return
*/
public static String decryptBase64(String string) {
return new String(decrypt(Base64.decodeBase64(string)));
}
private static byte[] decrypt(byte[] string) {
try {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("RSA/None/PKCS1Padding", "BC");
RSAPrivateKey pbk = (RSAPrivateKey)keyPair.getPrivate();
cipher.init(Cipher.DECRYPT_MODE, pbk);
byte[] plainText = cipher.doFinal(string);
return plainText;
}catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
// 生成public key
System.out.println(generateBase64PublicKey());
/*
js端 加密過程
var publicKey = ""; //java產生的公鑰
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
// 加密
alert(encrypt.encrypt("hello"));
*/
// 解密
Scanner s=new Scanner(System.in);
String str=s.nextLine();
System.out.println(decryptBase64(str));
}
}
相關推薦
網頁資料傳輸加密方法(前js+後java)
確保bcprov及codec的jar包存在路徑彙總 import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.SecureRandom;
App安全登入之密碼、通訊加密方法(MD5,Base64,RSA,AES)
今天研究了一下關於登入密碼加密的問題,下面來說說實現。 一、RSA非對稱加密: 具體流程如下:擷取自http://blog.csdn.net/m372897500/article/details/50905017 客戶端向伺服器第一次發起登入請求(不傳輸使用者名稱和密碼)。
Timer定時方法(間隔時間後執行)
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco } p.p3 { marg
非遞迴實現二叉樹遍歷(前/中/後序)
//基本資料結構 template<class T> struct BinaryTreeNode { T _data; BinaryTreeNode<T>* _left;
第151天:網頁中插入百度地圖方法(不需要密鑰)
ack 定義 text tran 3.5 index rand lbs adding 今天分享一個在網頁中插入百度地圖的方法,不需要密鑰哦,前兩天,我試了好多次百度開發平臺上使用百度地圖的方法,都需要申請密鑰,申請了,還是用不了,後來,終於發現了一個不需要密鑰的方法,希望對
用phpcms切換中英文網頁的方法(不用解析二級域名)、phpcms完成pc和手機端切換(同一域名)
msu 可用 解決 start 這就是 arp header 欄目 profile AA。phpcms進行雙語切換方法(不用解析二級域名) phpcms進行兩種語言的切換,有一把部分的人都是進行的二級域名的解析,這樣的話可能會有一部分的麻煩,我這裏有一種方法可以不用解析二級
各開發語言的程序加密方法(一)
加密從各個開發語言出發,對每個開發語言的角度對加密方法做一些闡述。這篇主要講述lua、erlang、perl、ruby語言的加密方法。加密所需:Virbox LM SDK最新版Virbox Protector加殼工具,DS Protector 文檔下載:http://dl.video.virbox.com/v
資料視覺化方法(一)
資料視覺化可以提供對資料的直觀感受,這個有時是很難通過表格的形式把握到的。本文將介紹分類問題的視覺化方法。 資料視覺化的第一步就是獲取資料,下面是用“岩石vs水雷資料集”為例,展示資料獲取方法。 1 import pandas as pd 2 3 ta
mongodb在插入資料環節避免資料重複的方法(python)
db['ceshi'].update({'link':job_link},{'$set':product},True) 假設link欄位不想重複,那麼當這個link第一次遇到時,因為True就是預設link不存在的時插入,如果是重複遇到這個link時,會更新link的值。 如果是insert
【密碼學】RSA加密 kotlin實現方法(支援任意位元組長度)
這個編輯器不支援kotlin,尷尬了···· 算了,就用Java來弄吧 val 定義常量 var 定義變數 具體kotlin的開發手冊詳見:http://www.runoob.com/kotlin/kotlin-tutorial.html 真的不想用Miracl這個庫···而且只支援c 但是用ko
資料型別轉換方法(C#)
New Begining~ MAIN C# 型別轉換方法 C# 提供了下列內建的型別轉換方法: 序號 方法 & 描述 1 ToBoolean 如果可能的話,把型別轉換為布林型。 2 ToByte &
Android呼叫本地js方法(不顯示h5介面)
有得時候在開發過程中會遇到,需要呼叫js的一些方法,又不需要顯示h5介面。比如,在你開發的產品中,PC、h5,移動端(Android、IOS)都需要使用到同一個演算法,而且這個演算法又非常的複雜,若每個端都寫一邊,不僅非常浪費時間,而且如果演算法設計到複雜的數字計算,那麼就可
js自定義加減乘除方法(防止js自身計算錯誤)
``` /** * 加法 * @param arg1 * @param arg2 * @returns {Number} */
C++工作筆記-3種方法對資料型別進行拆分(可用於各種協議)
比如用Long Long存3個數據的內容。 這裡要知道大小端的知識點。 方法一是用位運算; 方法二是用指標; 方法三是結構體(本質上也是指標); 執行截圖如下: 原始碼如下: main.cpp #include <iostream> using
JMeter中返回Json資料的處理方法(轉)
Json 作為一種資料交換格式在網路開發,特別是 Ajax 與 Restful 架構中應用的越來越廣泛。而 Apache 的 JMeter 也是較受歡迎的壓力測試工具之一,但是它本身沒有提供對於 Json&nb
一個以ajax請求為主的應用,資料傳輸加密的解決方案
首先是金鑰交換的過程,Diffie-Hellman金鑰交換演算法參考維基百科的文件: http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange client端js語言,服務端php語言 用DH金鑰交換演算法交換金鑰
SpringBoot前後端資料傳輸加密
採用的演算法為AES演算法 1. 編寫加密工具類 package com.pibigstar.utils; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax
如何明確資料分析的方法(一)
當我們在進行資料分析中,我們需要保證資料分析框架的體系化,這是因為資料分析是需要很強的邏輯性。如果要做好資料分析工作,就需要讓每一個步驟都具有層次感。現在很多的企業都在使用資料分析,他們主要是以營銷、管理等理論為指導,結合實際業務情況,搭建分析框架,這樣才能儘量確保資料分析維度的完整性,結果的有效性及正確
如何明確資料分析的方法(二)
在上一篇文章中我們給大家介紹了資料分析的框架,就是常用的5W2H法和邏輯樹。當然,只靠這些方法我們還是很難保證資料分析框架的體系化的,還有很多的方法,比如PEST、4P理論、使用者使用行為。我們就在這篇文章中給大家詳細的介紹一下這些內容。 首先是PEST分析法,PEST即政治(Political)、經濟
C#下用zedGraph生成大量資料統計圖表的方法(通過修改一些原始碼)
zedGraph是C#下非常優秀的開源的生成統計圖表的庫,最近需要用zedGraph生成大量資料的圖表(資料非常多,圖表非常大),遇到了一些問題,通過修改了一些原始碼實現 zedGraph的原始碼可以在這裡下載,http://dxdown1.onlinedown.net