1. 程式人生 > >網頁資料傳輸加密方法(前js+後java)

網頁資料傳輸加密方法(前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