日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript rsa java,用javascript与java执行RSA加密与解密

發(fā)布時間:2025/4/16 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript rsa java,用javascript与java执行RSA加密与解密 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

用javascript與java執(zhí)行

RSA加密與解密

2009-12-12 14:58:30???出處:https://www.yqdown.com

這幾天一直做安全登錄,網(wǎng)上查了好多資料,不盡如意。

具體實現(xiàn)思路如下:

1。服務端生成公鑰與私鑰,保存。

2。客戶端在請求到登錄頁面后,隨機生成一字符串。

3。后此隨機字符串作為密鑰加密密碼,再用從服務端獲取到的公鑰加密生成的隨機字符串。

4。將此兩段密文傳入服務端,服務端用私鑰解出隨機字符串,再用此私鑰解出加密的密文。

這其中有一個關鍵是處理

服務端的公鑰,傳入客戶端,客戶端用此公鑰加密字符串后,后又能在服務端用私鑰解出。

此文即為實現(xiàn)此步而作。

加密算法為RSA:

1。服務端的RSA? java實現(xiàn)

/**???? *???? */??? package com.sunsoft.struts.util;

import java.io.ByteArrayOutputStream;??? import java.io.FileInputStream;??? import java.io.FileOutputStream;??? import java.io.ObjectInputStream;??? import java.io.ObjectOutputStream;??? import java.math.BigInteger;??? import java.security.KeyFactory;??? import java.security.KeyPair;??? import java.security.KeyPairGenerator;??? import java.security.NoSuchAlgorithmException;??? import java.security.PrivateKey;??? import java.security.PublicKey;??? import java.security.SecureRandom;??? import java.security.interfaces.RSAPrivateKey;??? import java.security.interfaces.RSAPublicKey;??? import java.security.spec.InvalidKeySpecException;??? import java.security.spec.RSAPrivateKeySpec;??? import java.security.spec.RSAPublicKeySpec;

import javax.crypto.Cipher;

/**???? * RSA 工具類。提供加密,解密,生成密鑰對等要領

。???? * 須要

到http://www.bouncycastle.org下載bcprov-jdk14-123.jar。???? *???? */??? public class RSAUtil {??????? /**???????? * * 生成密鑰對 *???????? *???????? * @return KeyPair *???????? * @throws EncryptException???????? */??????? public static KeyPair generateKeyPair() throws Exception {??????????? try {??????????????? KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????????? final int KEY_SIZE = 1024;// 沒什么好說的了,這個值聯(lián)系

到塊加密的大小,可以修改

,但是不要太大,否則效率會低??????????????? keyPairGen.initialize(KEY_SIZE, new SecureRandom());??????????????? KeyPair keyPair = keyPairGen.generateKeyPair();??????????????? saveKeyPair(keyPair);??????????????? return keyPair;??????????? } catch (Exception e) {??????????????? throw new Exception(e.getMessage());??????????? }??????? }

public static KeyPair getKeyPair()throws Exception{??????????? FileInputStream fis = new FileInputStream("C:/RSAKey.txt");???????????? ObjectInputStream oos = new ObjectInputStream(fis);???????????? KeyPair kp= (KeyPair) oos.readObject();???????????? oos.close();???????????? fis.close();???????????? return kp;??????? }

public static void saveKeyPair(KeyPair kp)throws Exception{

FileOutputStream fos = new FileOutputStream("C:/RSAKey.txt");???????????? ObjectOutputStream oos = new ObjectOutputStream(fos);???????????? //生成密鑰???????????? oos.writeObject(kp);???????????? oos.close();???????????? fos.close();??????? }

/**???????? * * 生成公鑰 *???????? *???????? * @param modulus *???????? * @param publicExp

onent *???????? * @return RSAPublicKey *???????? * @throws Exception???????? */??????? public static RSAPublicKey generateRSAPublicKey(byte[] modulus,??????????????? byte[] publicExp

onent) throws Exception {??????????? KeyFactory keyFac = null;??????????? try {??????????????? keyFac = KeyFactory.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????? } catch (NoSuchAlgorithmException ex) {??????????????? throw new Exception(ex.getMessage());??????????? }

RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(??????????????????? modulus), new BigInteger(publicExp

onent));??????????? try {??????????????? return (RSAPublicKey) keyFac.generatePublic(pubKeySpec);??????????? } catch (InvalidKeySpecException ex) {??????????????? throw new Exception(ex.getMessage());??????????? }??????? }

/**???????? * * 生成私鑰 *???????? *???????? * @param modulus *???????? * @param privateExp

onent *???????? * @return RSAPrivateKey *???????? * @throws Exception???????? */??????? public static RSAPrivateKey generateRSAPrivateKey(byte[] modulus,??????????????? byte[] privateExp

onent) throws Exception {??????????? KeyFactory keyFac = null;??????????? try {??????????????? keyFac = KeyFactory.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????? } catch (NoSuchAlgorithmException ex) {??????????????? throw new Exception(ex.getMessage());??????????? }

RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger(??????????????????? modulus), new BigInteger(privateExp

onent));??????????? try {??????????????? return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec);??????????? } catch (InvalidKeySpecException ex) {??????????????? throw new Exception(ex.getMessage());??????????? }??????? }

/**???????? * * 加密 *???????? *???????? * @param key???????? *??????????? 加密的密鑰 *???????? * @param data???????? *??????????? 待加密的明文數(shù)據(jù) *???????? * @return 加密后的數(shù)據(jù) *???????? * @throws Exception???????? */

public static byte[] encrypt(PublicKey pk, byte[] data) throws Exception {??????????? try {??????????????? Cipher cipher = Cipher.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????????? cipher.init(Cipher.ENCRYPT_MODE, pk);??????????????? int blockSize = cipher.getBlockSize();// 獲得加密塊大小,如:加密前數(shù)據(jù)為128個byte,而key_size=1024??????????????? // 加密塊大小為127??????????????? // byte,加密后為128個byte;因此共有2個加密塊,第一個127??????????????? // byte第二個為1個byte??????????????? int outputSize = cipher.getOutputSize(data.length);// 獲得加密塊加密后塊大小??????????????? int leavedSize = data.length % blockSize;??????????????? int blocksSize = leavedSize != 0 ? data.length / blockSize + 1??????????????????????? : data.length / blockSize;??????????????? byte[] raw = new byte[outputSize * blocksSize];??????????????? int i = 0;??????????????? while (data.length - i * blockSize > 0) {??????????????????? if (data.length - i * blockSize > blockSize)??????????????????????? cipher.doFinal(data, i * blockSize, blockSize, raw, i??????????????????????????????? * outputSize);??????????????????? else??????????????????????? cipher.doFinal(data, i * blockSize, data.length - i??????????????????????????????? * blockSize, raw, i * outputSize);??????????????????? // 這里面doUpdate要領

不能用

,查看源代碼后發(fā)覺

每次doUpdate后并沒有什么實際動作除了把byte[]放到??????????????????? // ByteArrayOutputStream中,而最后doFinal的時候才將所有的byte[]執(zhí)行

加密,可是到了此時加密塊大小很可能已經(jīng)超出了??????????????????? // OutputSize所以只好用dofinal要領

i++;??????????????? }??????????????? return raw;??????????? } catch (Exception e) {??????????????? throw new Exception(e.getMessage());??????????? }??????? }

/**???????? * * 解密 *???????? *???????? * @param key???????? *??????????? 解密的密鑰 *???????? * @param raw???????? *??????????? 已經(jīng)加密的數(shù)據(jù) *???????? * @return 解密后的明文 *???????? * @throws Exception???????? */??????? public static byte[] decrypt(PrivateKey pk, byte[] raw) throws Exception {??????????? try {??????????????? Cipher cipher = Cipher.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????????? cipher.init(cipher.DECRYPT_MODE, pk);??????????????? int blockSize = cipher.getBlockSize();??????????????? ByteArrayOutputStream bout = new ByteArrayOutputStream(64);??????????????? int j = 0;

while (raw.length - j * blockSize > 0) {??????????????????? bout.write(cipher.doFinal(raw, j * blockSize, blockSize));??????????????????? j++;??????????????? }??????????????? return bout.toByteArray();??????????? } catch (Exception e) {??????????????? throw new Exception(e.getMessage());??????????? }??????? }

/**???????? * * *???????? *???????? * @param args *???????? * @throws Exception???????? */??????? public static void main(String[] args) throws Exception {??????????? RSAPublicKey rsap = (RSAPublicKey) RSAUtil.generateKeyPair().getPublic();??????????? String test = "hello world";??????????? byte[] en_test = encrypt(getKeyPair().getPublic(),test.getBytes());??????????? byte[] de_test = decrypt(getKeyPair().getPrivate(),en_test);??????????? System.out.println(new String(de_test));??????? }??? }

/**???? *???? */??? package com.sunsoft.struts.util;

import java.io.ByteArrayOutputStream;??? import java.io.FileInputStream;??? import java.io.FileOutputStream;??? import java.io.ObjectInputStream;??? import java.io.ObjectOutputStream;??? import java.math.BigInteger;??? import java.security.KeyFactory;??? import java.security.KeyPair;??? import java.security.KeyPairGenerator;??? import java.security.NoSuchAlgorithmException;??? import java.security.PrivateKey;??? import java.security.PublicKey;??? import java.security.SecureRandom;??? import java.security.interfaces.RSAPrivateKey;??? import java.security.interfaces.RSAPublicKey;??? import java.security.spec.InvalidKeySpecException;??? import java.security.spec.RSAPrivateKeySpec;??? import java.security.spec.RSAPublicKeySpec;

import javax.crypto.Cipher;

/**???? * RSA 工具類。提供加密,解密,生成密鑰對等要領

。???? * 須要

到http://www.bouncycastle.org下載bcprov-jdk14-123.jar。???? *???? */??? public class RSAUtil {??????? /**???????? * * 生成密鑰對 *???????? *???????? * @return KeyPair *???????? * @throws EncryptException???????? */??????? public static KeyPair generateKeyPair() throws Exception {??????????? try {??????????????? KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????????? final int KEY_SIZE = 1024;// 沒什么好說的了,這個值聯(lián)系

到塊加密的大小,可以修改

,但是不要太大,否則效率會低??????????????? keyPairGen.initialize(KEY_SIZE, new SecureRandom());??????????????? KeyPair keyPair = keyPairGen.generateKeyPair();??????????????? saveKeyPair(keyPair);??????????????? return keyPair;??????????? } catch (Exception e) {??????????????? throw new Exception(e.getMessage());??????????? }??????? }

public static KeyPair getKeyPair()throws Exception{??????????? FileInputStream fis = new FileInputStream("C:/RSAKey.txt");???????????? ObjectInputStream oos = new ObjectInputStream(fis);???????????? KeyPair kp= (KeyPair) oos.readObject();???????????? oos.close();???????????? fis.close();???????????? return kp;??????? }

public static void saveKeyPair(KeyPair kp)throws Exception{

FileOutputStream fos = new FileOutputStream("C:/RSAKey.txt");???????????? ObjectOutputStream oos = new ObjectOutputStream(fos);???????????? //生成密鑰???????????? oos.writeObject(kp);???????????? oos.close();???????????? fos.close();??????? }

/**???????? * * 生成公鑰 *???????? *???????? * @param modulus *???????? * @param publicExp

onent *???????? * @return RSAPublicKey *???????? * @throws Exception???????? */??????? public static RSAPublicKey generateRSAPublicKey(byte[] modulus,??????????????? byte[] publicExp

onent) throws Exception {??????????? KeyFactory keyFac = null;??????????? try {??????????????? keyFac = KeyFactory.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????? } catch (NoSuchAlgorithmException ex) {??????????????? throw new Exception(ex.getMessage());??????????? }

RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(??????????????????? modulus), new BigInteger(publicExp

onent));??????????? try {??????????????? return (RSAPublicKey) keyFac.generatePublic(pubKeySpec);??????????? } catch (InvalidKeySpecException ex) {??????????????? throw new Exception(ex.getMessage());??????????? }??????? }

/**???????? * * 生成私鑰 *???????? *???????? * @param modulus *???????? * @param privateExp

onent *???????? * @return RSAPrivateKey *???????? * @throws Exception???????? */??????? public static RSAPrivateKey generateRSAPrivateKey(byte[] modulus,??????????????? byte[] privateExp

onent) throws Exception {??????????? KeyFactory keyFac = null;??????????? try {??????????????? keyFac = KeyFactory.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????? } catch (NoSuchAlgorithmException ex) {??????????????? throw new Exception(ex.getMessage());??????????? }

RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger(??????????????????? modulus), new BigInteger(privateExp

onent));??????????? try {??????????????? return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec);??????????? } catch (InvalidKeySpecException ex) {??????????????? throw new Exception(ex.getMessage());??????????? }??????? }

/**???????? * * 加密 *???????? *???????? * @param key???????? *??????????? 加密的密鑰 *???????? * @param data???????? *??????????? 待加密的明文數(shù)據(jù) *???????? * @return 加密后的數(shù)據(jù) *???????? * @throws Exception???????? */??????? public static byte[] encrypt(PublicKey pk, byte[] data) throws Exception {??????????? try {??????????????? Cipher cipher = Cipher.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????????? cipher.init(Cipher.ENCRYPT_MODE, pk);??????????????? int blockSize = cipher.getBlockSize();// 獲得加密塊大小,如:加密前數(shù)據(jù)為128個byte,而key_size=1024??????????????? // 加密塊大小為127??????????????? // byte,加密后為128個byte;因此共有2個加密塊,第一個127??????????????? // byte第二個為1個byte??????????????? int outputSize = cipher.getOutputSize(data.length);// 獲得加密塊加密后塊大小??????????????? int leavedSize = data.length % blockSize;??????????????? int blocksSize = leavedSize != 0 ? data.length / blockSize + 1??????????????????????? : data.length / blockSize;??????????????? byte[] raw = new byte[outputSize * blocksSize];??????????????? int i = 0;??????????????? while (data.length - i * blockSize > 0) {??????????????????? if (data.length - i * blockSize > blockSize)??????????????????????? cipher.doFinal(data, i * blockSize, blockSize, raw, i??????????????????????????????? * outputSize);??????????????????? else??????????????????????? cipher.doFinal(data, i * blockSize, data.length - i??????????????????????????????? * blockSize, raw, i * outputSize);

// 這里面doUpdate要領

不能用

,查看源代碼后發(fā)覺

每次doUpdate后并沒有什么實際動作除了把byte[]放到??????????????????? // ByteArrayOutputStream中,而最后doFinal的時候才將所有的byte[]執(zhí)行

加密,可是到了此時加密塊大小很可能已經(jīng)超出了??????????????????? // OutputSize所以只好用dofinal要領

i++;??????????????? }??????????????? return raw;??????????? } catch (Exception e) {??????????????? throw new Exception(e.getMessage());??????????? }??????? }

/**???????? * * 解密 *???????? *???????? * @param key???????? *??????????? 解密的密鑰 *???????? * @param raw???????? *??????????? 已經(jīng)加密的數(shù)據(jù) *???????? * @return 解密后的明文 *???????? * @throws Exception???????? */??????? public static byte[] decrypt(PrivateKey pk, byte[] raw) throws Exception {??????????? try {??????????????? Cipher cipher = Cipher.getInstance("RSA",??????????????????????? new org.bouncycastle.jce.provider.BouncyCastleProvider());??????????????? cipher.init(cipher.DECRYPT_MODE, pk);??????????????? int blockSize = cipher.getBlockSize();??????????????? ByteArrayOutputStream bout = new ByteArrayOutputStream(64);??????????????? int j = 0;

while (raw.length - j * blockSize > 0) {??????????????????? bout.write(cipher.doFinal(raw, j * blockSize, blockSize));??????????????????? j++;??????????????? }??????????????? return bout.toByteArray();??????????? } catch (Exception e) {??????????????? throw new Exception(e.getMessage());??????????? }??????? }

/**???????? * * *???????? *???????? * @param args *???????? * @throws Exception???????? */??????? public static void main(String[] args) throws Exception {??????????? RSAPublicKey rsap = (RSAPublicKey) RSAUtil.generateKeyPair().getPublic();??????????? String test = "hello world";??????????? byte[] en_test = encrypt(getKeyPair().getPublic(),test.getBytes());??????????? byte[] de_test = decrypt(getKeyPair().getPrivate(),en_test);??????????? system.out.println(new String(de_test));??????? }??? }

2.測試頁面:

IndexAction.java

/*???? * Generated by MyEclipse Struts???? * Template path: templates/java/JavaClass.vtl???? */??? package com.sunsoft.struts.action;

import java.security.interfaces.RSAPrivateKey;??? import java.security.interfaces.RSAPublicKey;

import javax.servlet.http.HttpServletRequest;??? import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;??? import org.apache.struts.action.ActionForm;??? import org.apache.struts.action.ActionForward;??? import org.apache.struts.action.ActionMapping;

import com.sunsoft.struts.util.RSAUtil;

/**???? * MyEclipse Struts???? * Creation date: 06-28-2008???? *???? * XDoclet definition:???? * @struts.action validate="true"???? */??? public class IndexAction extends Action {??????? /*???????? * Generated Methods???????? */

/**???????? * Method execute???????? * @param mapping???????? * @param form???????? * @param request???????? * @param response???????? * @return ActionForward???????? */??????? public ActionForward execute(ActionMapping mapping, ActionForm form,??????????????? HttpServletRequest request, HttpServletResponse response)throws Exception {

RSAPublicKey rsap = (RSAPublicKey) RSAUtil.getKeyPair().getPublic();??????????? String module = rsap.getModulus().toString(16);??????????? String empoent = rsap.getPublicExp

onent().toString(16);??????????? System.out.println("module");??????????? System.out.println(module);??????????? System.out.println("empoent");??????????? System.out.println(empoent);??????????? request.setAttribute("m", module);??????????? request.setAttribute("e", empoent);??????????? return mapping.findForward("login");??????? }??? }

/*???? * Generated by MyEclipse Struts???? * Template path: templates/java/JavaClass.vtl???? */??? package com.sunsoft.struts.action;

import java.security.interfaces.RSAPrivateKey;??? import java.security.interfaces.RSAPublicKey;

import javax.servlet.http.HttpServletRequest;??? import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;??? import org.apache.struts.action.ActionForm;??? import org.apache.struts.action.ActionForward;??? import org.apache.struts.action.ActionMapping;

import com.sunsoft.struts.util.RSAUtil;

/**???? * MyEclipse Struts???? * Creation date: 06-28-2008???? *???? * XDoclet definition:???? * @struts.action validate="true"???? */??? public class IndexAction extends Action {??????? /*???????? * Generated Methods???????? */

/**???????? * Method execute???????? * @param mapping???????? * @param form???????? * @param request???????? * @param response???????? * @return ActionForward???????? */??????? public ActionForward execute(ActionMapping mapping, ActionForm form,??????????????? HttpServletRequest request, HttpServletResponse response)throws Exception {

RSAPublicKey rsap = (RSAPublicKey) RSAUtil.getKeyPair().getPublic();??????????? String module = rsap.getModulus().toString(16);??????????? String empoent = rsap.getPublicExp

onent().toString(16);??????????? system.out.println("module");??????????? system.out.println(module);??????????? system.out.println("empoent");??????????? system.out.println(empoent);??????????? request.setAttribute("m", module);??????????? request.setAttribute("e", empoent);??????????? return mapping.findForward("login");??????? }??? }

通過此action進入登錄頁面,并傳入公鑰的 Modulus 與PublicExp

onent的hex編碼形式。

3。登錄頁面 login.jsp

login

??????? ??????? ??????? ??????? ??????? ??? ??? ??? ???

}

?????

?????????
Login:
Password:
??????? ????? ??? login

??????? ??????? ??????? ??????? ??????? ??? ??? ??? ???

}

?????

?????????
Login:
Password:
??????? ????? ???

/*???? * Generated by MyEclipse Struts???? * Template path: templates/java/JavaClass.vtl???? */??? package com.sunsoft.struts.action;

import java.math.BigInteger;

import javax.servlet.http.HttpServletRequest;??? import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;??? import org.apache.struts.action.ActionForm;??? import org.apache.struts.action.ActionForward;??? import org.apache.struts.action.ActionMapping;

import com.sunsoft.struts.util.RSAUtil;

/**???? * MyEclipse Struts???? * Creation date: 06-28-2008???? *???? * XDoclet definition:???? * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"???? * @struts.action-forward name="error" path="/error.jsp"???? * @struts.action-forward name="success" path="/success.jsp"???? */??? public class LoginAction extends Action {??????? /*???????? * Generated Methods???????? */

/**???????? * Method execute???????? * @param mapping???????? * @param form???????? * @param request???????? * @param response???????? * @return ActionForward???????? */??????? public ActionForward execute(ActionMapping mapping, ActionForm form,??????????????? HttpServletRequest request, HttpServletResponse response) throws Exception{??????????? //LoginForm loginForm = (LoginForm) form;??????????? String result = request.getParameter("result");??????????? System.out.println("原文加密后為:");??????????? System.out.println(result);??????????? byte[] en_result = new BigInteger(result, 16).toByteArray();??????????? System.out.println("轉成byte[]"+new String(en_result));??????????? byte[] de_result = RSAUtil.decrypt(RSAUtil.getKeyPair().getPrivate(),en_result);??????????? System.out.println("還原密文:");

System.out.println(new String(de_result));??????????? StringBuffer sb = new StringBuffer();??????????? sb.append(new String(de_result));??????????? System.out.println(sb.reverse().toString());??????????? return mapping.findForward("success");??????? }??? }

/*???? * Generated by MyEclipse Struts???? * Template path: templates/java/JavaClass.vtl???? */??? package com.sunsoft.struts.action;

import java.math.BigInteger;

import javax.servlet.http.HttpServletRequest;??? import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;??? import org.apache.struts.action.ActionForm;??? import org.apache.struts.action.ActionForward;??? import org.apache.struts.action.ActionMapping;

import com.sunsoft.struts.util.RSAUtil;

/**???? * MyEclipse Struts???? * Creation date: 06-28-2008???? *???? * XDoclet definition:???? * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"???? * @struts.action-forward name="error" path="/error.jsp"???? * @struts.action-forward name="success" path="/success.jsp"???? */??? public class LoginAction extends Action {??????? /*???????? * Generated Methods???????? */

/**???????? * Method execute???????? * @param mapping???????? * @param form???????? * @param request???????? * @param response???????? * @return ActionForward???????? */??????? public ActionForward execute(ActionMapping mapping, ActionForm form,??????????????? HttpServletRequest request, HttpServletResponse response) throws Exception{??????????? //LoginForm loginForm = (LoginForm) form;??????????? String result = request.getParameter("result");??????????? system.out.println("原文加密后為:");??????????? system.out.println(result);??????????? byte[] en_result = new BigInteger(result, 16).toByteArray();??????????? system.out.println("轉成byte[]"+new String(en_result));??????????? byte[] de_result = RSAUtil.decrypt(RSAUtil.getKeyPair().getPrivate(),en_result);??????????? system.out.println("還原密文:");

system.out.println(new String(de_result));??????????? StringBuffer sb = new StringBuffer();??????????? sb.append(new String(de_result));??????????? system.out.println(sb.reverse().toString());??????????? return mapping.findForward("success");??????? }??? }

分享到

總結

以上是生活随笔為你收集整理的javascript rsa java,用javascript与java执行RSA加密与解密的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。