1. 程式人生 > >AES 加密 解密 Hex編碼解碼

AES 加密 解密 Hex編碼解碼

  最近做小程式使用者ID驗證的問題,文明傳遞有風險,所以想加密再傳送使用者ID,找了些加密的方法,

最開始想用MD5加密,以前有過這樣的加密方式,現在換一種RES方式   對應的一組公鑰和私鑰加密方式,


/**
* @author lmc
* @version date:2018年9月27日 上午11:08:27
*/

package com.yitai.tms.weixin.rsa;

import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

import javax.crypto.Cipher;

import org.apache.commons.codec.binary.Hex;


/**
 * @author lmc
 * @Email 
[email protected]
* @date 2018年9月27日 */ public class RSAwechat { private RSAPublicKey rsaPublicKey; private RSAPrivateKey rsaPrivateKey; public String encode(String src) { try { //初始化金鑰 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); rsaPublicKey = (RSAPublicKey)keyPair.getPublic(); rsaPrivateKey = (RSAPrivateKey)keyPair.getPrivate(); //私鑰加密 公鑰解密 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, privateKey); byte[] resultBytes = cipher.doFinal(src.getBytes()); //私鑰解密 公鑰加密 // X509EncodedKeySpec x509EncodedKeySpec = // new X509EncodedKeySpec(rsaPublicKey.getEncoded()); // KeyFactory keyFactory = KeyFactory.getInstance("RSA"); // PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); // Cipher cipher = Cipher.getInstance("RSA"); // cipher.init(Cipher.ENCRYPT_MODE, publicKey); // byte[] resultBytes = cipher.doFinal(src.getBytes()); return Hex.encodeHexString(resultBytes); } catch(Exception e) { e.printStackTrace(); } return null; } public String decode(String src) { try { //私鑰加密 公鑰解密 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, publicKey); byte[] resultBytes = cipher.doFinal(Hex.decodeHex(src.toCharArray())); //私鑰解密 公鑰加密 // PKCS8EncodedKeySpec pkcs8EncodedKeySpec // = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded()); // KeyFactory keyFactory = KeyFactory.getInstance("RSA"); // PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); // Cipher cipher = Cipher.getInstance("RSA"); // cipher.init(Cipher.DECRYPT_MODE, privateKey); // byte[] resultBytes = cipher.doFinal(Hex.decodeHex(src.toCharArray())); return new String(resultBytes); } catch(Exception e) { e.printStackTrace(); } return null; } }

加密方式


/**
* @author lmc
* @version date:2018年9月27日 上午11:11:11
*/

package com.yitai.tms.weixin.rsa;

/**
 * @author lmc
 * @Email [email protected]
 * @date 2018年9月27日
 */
public class RSAtool {

	
	private static 	RSAwechat rsa=new RSAwechat();
	public static String encRSAwechat(String token){
		return rsa.encode(token);
	}
	
	public static String decRSAwechat(String token){
		return rsa.decode(token);
	}
	
	public static void main(String args[]) 
	{
		System.out.println(RSAtool.encRSAwechat("asdfasdfasdfa"));
		String str = RSAtool.encRSAwechat("asdfasdfasdfa");
		System.out.println(RSAtool.decRSAwechat(str));
	}


}

相關推薦

AES 加密 解密 Hex編碼解碼

  最近做小程式使用者ID驗證的問題,文明傳遞有風險,所以想加密再傳送使用者ID,找了些加密的方法, 最開始想用MD5加密,以前有過這樣的加密方式,現在換一種RES方式   對應的一組公鑰和私鑰加密方式, /** * @author lmc * @version d

AES 加密 解密Hex編碼解碼

Aes加密解密方法使用Hex進行了編碼解碼 package com.baidu.wallet.bdwallet.utils; import java.io.UnsupportedEncodingException; import java.security.Inval

Aes加密解密

tran delegate class ext str eap ase hfs tde 加密時:先對string進行utf8解析成數組-->對數組進行加密-->對加密結果用base64解析成string。 那麽揭秘時,

AES加密解密&&SHA1、SHA加密&&MD5加密

algorithm buffer password 使用 eas ray locks tex update AES加密解密 SHA1、SHA加密 MD5加密 二話不說立即附上代碼: package com.luo.util; import j

C# 實現 JAVA AES加密解密[原創]

com base gets tran con spec ole tor 技術分享 以下是網上普遍能收到的JAVA AES加密解密方法。 因為裏面用到了KeyGenerator 和 SecureRandom,但是.NET 裏面沒有這2個類。無法使用安全隨機數生成KEY。 我們

AES加密解密 Java中運用

upper span pub substring rac ont wid mem log AES全稱 Advanced Encryption Standard, 高級加密算法,更加安全,可取代DES。 Aes: package com.blog.d201706.en

Javascript實現前端AES加密解密功能

西安人 才網 西安人才網掌握的HTML中的js前端AES加密最近因為項目需求做了一次MITM,俄然即便發現運用HTTPS,也不能確保數據傳輸過程中的安全性。 經過中間人進犯,能夠直接獲取到Http協議的一切內容。 所以開端嘗試做一些簡略的加密,在一定程度上確保安全性。本次選用AES加密數據,所以客戶端

C# 實現AES加密--解密

bsp 密文 rem adding gets manage string sys cipher /// <summary> /// AES 加密 /// </summary> ///

ruby 實現java中的aes 加密解密

abcde class hwm nbsp crypt 實現 () cbc sad def aes_encrypt() cipher = OpenSSL::Cipher::AES.new(128, :CBC) cipher.encrypt cipher.key =

python AES加密解密 pycryptodome

掌握 mod pack 然而 http != col 技術 aes 環境 pyhton3.6 pip 升級到10.0以上,,不然可能出現裝不上的可能。 博主為了解碼 AES 用了1天的時間,安了各種包,然而走了很多坑,在這裏給大家提供一個簡便的方法 首先在命令行(推薦)

Crypto++ AES 加密解密流程

color 程序 pla ESS dem cde inb def 必須 // aesdemo.cpp : 定義控制臺應用程序的入口點。 // #include <stdio.h>#include <tchar.h>#include <ios

php aes加密解密類(兼容php5、php7)

bytes pri rip dom ase lee vat idea cipher <?php /** * @desc:php aes加密解密類 * @author [Lee] <[<[email protected]>]> */ class

java AES 加密解密工具(Advanced Encryption Standard)

@param key block 生成 utf i++ spec res null 1、通用方法 package com.qlkj.hzd.commom.utils; import javax.crypto.*; import java.io.Unsupported

cryptojs aes加密解密

base64和hex vue專案     //如下程式碼寫為vue的全域性函式,便於呼叫     var iv = crypto.enc.Utf8.parse('1234567887654321');    &

PHP使用AES加密/解密

AES加密在php5的版本中使用的mcrypt_decrypt 函式,該函式已經在php7.1後棄用了,取而代之的是openssl的openssl_encrypt和openssl_decrypt,並且程式碼也非常精簡,下面是示例程式碼: class Aes { public $key = ''

CTR分組模式實現AES加密解密(go語言)

版權宣告:本文為作者原創,如需轉載,請註明出處 https://blog.csdn.net/weixin_42940826 AES演算法簡介 AES演算法是為了取代DES演算法而生,雖然3DES演算法仍然可以使用,但是效率比較低下,AES演算法是在眾多演算法中選拔

AES加密解密 附贈 base64

AES加密是一總比較常用的,會補足長度的加密方式,不管你長度為多少,加密完之後都會變成128位(僅指這裡,當然也有其他的AES)。 敲黑板:之前做過一次跨語言的加密解密,發現是不可以的。即java php c++之間不同的加密解密不要通用,因為進位制和編碼的問題,如果強行使用的話。需要二進

使用Python進行AES加密解密功能實現

PyCrypto是一款非常實用的Python加密模組,最近寫了一個檔案加密指令碼需要用到AES加密,和大家分析一下心得。 下載與安裝:PyCrypto專案已經於2015年7月停止了,下面是官方的下載地址。 https://www.dlitz.net/software/pycrypto/ 如果是l

PHP AES加密解密

<?php namespace app\models; class AES{ public $key; //建構函式,用金鑰初始化 function Prpcrypt( $k ) { $this->key = $k; } /*AES加密*/ public static function e

PHP中AES加密解密

我們在工作中會遇到各種加密,下面就是PHP中AES加密解密的類 <?php  class Aes {     /**      * var string&nbs