国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

獲取Android簽名證書的公鑰和私鑰的簡單實例

2019-12-12 04:20:16
字體:
供稿:網(wǎng)友

本文以Android簽名JKS格式的證書為例:

package com.test;import java.io.FileInputStream;import java.security.Key;import java.security.KeyStore;import java.security.PrivateKey;import java.security.PublicKey;import javax.crypto.Cipher;public class SignTest {  public static void main(String[] args) {    try {      // 用證書的私鑰解密 - 該私鑰存在生成該證書的密鑰庫中      FileInputStream fis2 = new FileInputStream("G://shanhytest.keystore");      KeyStore ks = KeyStore.getInstance("JKS"); // 加載證書庫      char[] kspwd = "shanhytest".toCharArray(); // 證書庫密碼      char[] keypwd = "shanhytest".toCharArray(); // 證書密碼      String alias = "shanhytest";// 別名      ks.load(fis2, kspwd); // 加載證書      PrivateKey privateKey = (PrivateKey) ks.getKey(alias, keypwd); // 獲取證書私鑰      PublicKey publicKey = ks.getCertificate(alias).getPublicKey();// 獲取證書公鑰      fis2.close();      System.out.println("privateKey = " + getKeyString(privateKey));      System.out.println("publicKey = " + getKeyString(publicKey));      // 測試加密解密字符串      String srcContent = "今天天氣不錯。";      // 將字符串使用公鑰加密后,再用私鑰解密后,驗證是否能正常還原。      // 因為非對稱加密算法適合對小數(shù)據(jù)量的數(shù)據(jù)進行加密和解密,而且性能比較差,所以在實際的操作過程中,我們通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然后用對稱加密算法加密數(shù)據(jù),這樣我們就集成了兩類加密算法的優(yōu)點,既實現(xiàn)了加密速度快的優(yōu)點,又實現(xiàn)了安全方便管理密鑰的優(yōu)點。      byte[] d1 = crypt(publicKey, srcContent.getBytes(), Cipher.ENCRYPT_MODE);      byte[] d2 = crypt(privateKey, d1, Cipher.DECRYPT_MODE);      System.out.println(new String(d2));    } catch (Exception e) {      e.printStackTrace();    }  }  /**   * 將KEY轉(zhuǎn)換為字符串   *    * @param key   * @return   * @author SHANHY   */  private static String getKeyString(Key key) {    byte[] keyBytes = key.getEncoded();    String s = new String(org.apache.commons.codec.binary.Base64.encodeBase64(keyBytes));    return s;  }  /**   * 加密/解密   *    * @param key   *      私鑰打包成byte[]形式   * @param data   *      要解密的數(shù)據(jù)   * @param opmode   *      操作類型(Cipher.DECRYPT_MODE為解密,Cipher.ENCRYPT_MODE為加密)   * @return 解密數(shù)據(jù)   */  public static byte[] crypt(Key key, byte[] data, int opmode) {    try {      long startTime = System.currentTimeMillis();      Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");//jdk默認標準//     Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");// android默認標準      cipher.init(opmode, key);      byte[] result = cipher.doFinal(data);      System.out.println((Cipher.DECRYPT_MODE==opmode?"解密":"加密") + "耗時:" + (System.currentTimeMillis() - startTime));      return result;    } catch (Exception e) {      e.printStackTrace();    }    return null;  }}

以上這篇獲取Android簽名證書的公鑰和私鑰的簡單實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 贺兰县| 赫章县| 德兴市| 从江县| 鄂伦春自治旗| 太和县| 阿勒泰市| 大姚县| 万山特区| 宣汉县| 垣曲县| 墨玉县| 呼和浩特市| 吕梁市| 慈溪市| 广宁县| 滕州市| 锡林浩特市| 寿宁县| 三河市| 黄石市| 定州市| 金阳县| 深州市| 霸州市| 太保市| 浦江县| 克拉玛依市| 湛江市| 贡觉县| 鹰潭市| 白城市| 宿迁市| 丹阳市| 古浪县| 峡江县| 延津县| 赫章县| 德格县| 都昌县| 湖州市|