1. 程式人生 > >JAVA加密方法總結

JAVA加密方法總結

	/**
	 * MD5加密,適用於通用的加密規則
	 * @param id
	 * @return
	 */
	public String sign(String content) {
		String contentKey = content + privateKey;
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.reset();
			md.update(contentKey.getBytes("UTF-8"));
			byte[] result = md.digest();

			return HttpHelper.bytesToHexString(result);
		} catch (Exception e) {
			System.out.println(Arrays.toString(e.getStackTrace()));
		}
    	return null;
    }
	
    /**
     * MD5withRSA私鑰加密
     * @param content
     * @return
     * @throws Exception
     */
    public String MD5withRSASign(String content) throws Exception {
        byte[] contentBytes = content.getBytes("utf-8");
     
        Signature signature = Signature.getInstance("MD5withRSA");
        signature.initSign(getPrivateKey(privateKey));
        signature.update(contentBytes);
        byte[] signs = signature.sign();
        
        return Base64.encodeBase64String(signs);
    }
    
    /**
     * SHA1withRSA私鑰加密
     * @param content
     * @param privateKey
     * @return
     * @throws Exception
     */
    public String getSha1Sign(String content) throws Exception {
        byte[] contentBytes = content.getBytes("utf-8");
        Signature signature = Signature.getInstance("SHA1withRSA");
        signature.initSign(getPrivateKey(privateKey));
        signature.update(contentBytes);
        byte[] signs = signature.sign();
        return Base64.encodeBase64String(signs);
    }
    
    /**
     * RSA公鑰加密
     * @param content
     * @return
     * @throws Exception
     */
    public String RSASign(String content) throws Exception{  
    	byte[] contentBytes = content.getBytes("utf-8");
    	
        Cipher cipher=Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(publicKey));  
        return Base64.encodeBase64String(cipher.doFinal(contentBytes));  
    }  
      
    
    /**
     * 公鑰轉換
     * @param key
     * @return
     * @throws Exception
     */
    private static PublicKey getPublicKey(String key) throws Exception {
        byte[] keyBytes;
        keyBytes = (new BASE64Decoder()).decodeBuffer(key);
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(keySpec);
        return publicKey;
  }
    /**
     * 私鑰轉換
     * @param key
     * @return
     * @throws Exception
     */
    private static PrivateKey getPrivateKey(String key) throws Exception {
	    byte[] keyBytes;
	    keyBytes = (new BASE64Decoder()).decodeBuffer(key);
	    PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
	    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
	    PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
	    return privateKey;
  }

相關推薦

JAVA加密方法總結

/** * MD5加密,適用於通用的加密規則 * @param id * @return */ public String sign(String content) { String contentKey = content + privateKey;

java方法總結(每周更新)

實例 參數 創建 方法 get ack bject 子類 generate 1、URLEncoder.encode(username,"utf-8")將“utf-8”編碼的username先解碼,然後再采用URL編碼 2、URLDecoder.decode(autoLogi

java finalize方法總結 GC執行finalize的過程

(1) 首先,大致描述一下finalize流程:當物件變成(GC Roots)不可達時,GC會判斷該物件是否覆蓋了finalize方法,若未覆蓋,則直接將其回收。否則,若物件未執行過finalize方法,將其放入F-Queue佇列,由一低優先順序執行緒執行該佇列中物件的finalize方法。執行finaliz

linux下檔案加密方法總結

為了安全考慮,通常會對一些重要檔案進行加密備份或加密儲存,下面對linux下的檔案加密方法做一簡單總結: 方法一:gzexe加密 這種加密方式不是非常保險的方法,但是能夠滿足一般的加密用途,可以隱蔽指令碼中的密碼等資訊。 它是使用系統自帶的gzexe程式,它不但加密

Android開發根據Json直接生成Java Bean方法總結

在開發過程中拿到從伺服器請求的json字串需要解析成Bean物件方便我們使用,自己寫bean又太麻煩 經過這麼長時間的Android開發,我收集了三種比較常用的通過json自動生成Bean物件的方法:

Java中獲取資源文件的方法總結

tco doget 技術 resource images 磁盤 response linux exception 這裏總結3中方法獲取資源文件的 ServletContext Class ClassLoader 文件的位置 1. ServletC

構造方法和一般方法的區別(面試)-----java基礎知識總結

col 進行 span round 構造方法 基礎知識 fff font size 構造方法:對象創建時,就會調用與之對應的構造方法,對對象進行初始化; 一般方法:對象創建後,需要方法功能時才會調用。 構造方法,在對象創建時,會調用且只調用一次。

JAVA中循環刪除list中元素的方法總結

tor 循環 toolbar i++ 使用 修改 log span .get  印象中循環刪除list中的元素使用for循環的方式是有問題的,但是可以使用增強的for循環,然後今天在使用時發現報錯了,然後去科普了一下,再然後發現這是一個誤區。下面就來講一講。。伸手黨可直接跳

java構造方法的註意事項總結

nbsp 不能 每次 ati 負責 進行 需要 構造函數 註意 構造方法細節總結~~~~~ 1:首先要了解為什麽需要構造方法,,,類中有太多的屬性,每次給屬性賦值時非常麻煩:編碼量大,無法重用給屬性賦值的代碼。。 2:什麽是構造方法呢?   構造方法負責初始化類中的實

JAVA中獲取鍵盤輸入的方法總結

鍵盤輸入 throws 應該 padding left 接收 [] util float Java程序開發過程中,需要從鍵盤獲取輸入值是常有的事,但Java它偏偏就沒有像c語言給我們提供的scanf(),C++給我們提供的cin()獲取鍵盤輸入值的現成函數!下面介紹三種解決

java基本運算方法總結(ing)

方法 運算 sys 隨機數 mat ... 方法總結 clas math 邊學邊總結... 1、冪的運算 Math.pow(a,b) 2、隨機數的方法 System.currentTimeMillis()    Math.randow() 3、絕對值的運算

JAVA中循環刪除list中元素的方法總結(跳格刪除問題解決)(轉)

今天 src log 觸發 導致 spi als exceptio spa  印象中循環刪除list中的元素使用for循環的方式是有問題的,但是可以使用增強的for循環,然後今天在使用時發現報錯了,然後去科普了一下,再然後發現這是一個誤區。下面就來講一講。。伸手黨可直接跳至

java基礎學習總結(七):Cloneable介面和Object的clone()方法

為什麼要克隆 為什麼要使用克隆,這其實反映的是一個很現實的問題,假如我們有一個物件: public class SimpleObject implements Cloneable { private String str; public SimpleObject()

Java IO流常用操作方法總結

一、簡介 在實際工作中,基本上每個專案難免都會有檔案相關的操作,比如檔案上傳、檔案下載等,這些操作都是使用IO流進行操作的,本文將通過簡單的示例對常用的一些IO流進行總結。 二、使用詳解 【a】FileInputStream與FileOutputStream 首先通過檢視jdk文件,

關於java.lang.UnsupportedClassVersionError解決方法總結

今天在把本地專案像伺服器部署的時候報錯java.lang.UnsupportedClassVersionError,我本地用的JDK1.8,伺服器是1.7的JDK,所以報這個錯誤,我又重新在本地安裝了JDK1.7,重新編譯後上傳,問題解決。在這做個記錄。 此問題一般出現在高版本JDK向底版本JD

java 加密的一些概念(慕課網視訊總結,僅對於自己梳理知識)

當您點開這個文章的時候,想要看一下我的總結,不妨看一下別人寫的吧。基本上都是翻譯視訊中的所有資訊。地址為:https://blog.csdn.net/u013991521/article/category/5787377 1.加密:把明文(也就是大部分人能看懂的字元)轉換成同位數的操作。可能不是

php、java、android、ios通用的3des加密方法

 php、java、android、ios通用的3des方法 php <?php class DES3 { var $key = "my.oschina.net/penngo?#@"; var $iv = "01234567"; fu

jsp頁面中JSTL/EL標籤引用java後臺靜態static欄位的方法總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java程式設計學習技巧和方法總結

乾貨:必須要有反饋,不斷調整,多讀書,多些筆記。 解釋:不練習你以為你能掌握?笑話,只有自己根據一個個小目標不斷的敲,執行,給予你反饋,這樣才會真的進步。 紙上談Java,是永遠停止在口。   關於筆記:我其實一直有些筆記的習慣,高中到現在15年了;心情不好,寫寫筆記,學到重點

java實現隨機產生6位數的方法總結

代碼 exti code str 循環 字符串 end random and package com.yin.test; import java.util.Random; import org.junit.Test; /** * @author v