1. 程式人生 > >java 加密解密時間戳

java 加密解密時間戳

今天獻上一個將時間戳加密成一個21位大寫英文字母串的java程式碼,並附上解密程式碼,思路很簡單,僅供娛樂

private Map<Character, String> codeMap; 
private String englishChars;
private ArrayList<Integer> changeIndex;
public SimpleDateFormat sdf;

/**
     * 加密時間
     * @author huzhen
     * @since 2017/7/12
     * @param date date()型別時間
     * */
public String enTimeCode(Date enDate){ String dataStr = null; try{ dataStr = this.getSdf().format(enDate); String enStr = ""; for(int i=0; i<dataStr.length(); i++){ String transLetter = this.getCodeMap().get(dataStr.charAt(i)); enStr = enStr + transLetter; } int
changeCusor = 0; StringBuffer retStr = new StringBuffer(generateRandString(21)); for(int i=0; i<retStr.length(); i++){ if(this.getChangeIndex().contains(i)){ retStr.setCharAt(i, enStr.charAt(changeCusor)); changeCusor++; } } return
retStr.toString(); }catch(Exception e){ //e.printStackTrace(); System.out.println(e.getMessage()); return ""; } } /** * 將加密後的亂碼解密 * @author huzhen * @since 2017/7/12 * @param date date()型別時間 * */ public Date deTimeCode(String enStr){ String dateStr = ""; try{ String toDecodeStr = ""; for(int i=0; i<enStr.length(); i++){ if(this.getChangeIndex().contains(i)){ toDecodeStr = toDecodeStr + enStr.charAt(i); } } for(int i=0; i<toDecodeStr.length(); i++){ char deChar = valueGetKey(this.getCodeMap(), String.valueOf(toDecodeStr.charAt(i))).get(0); if(deChar != '\0'){ dateStr += deChar; } } return this.getSdf().parse(dateStr); }catch(Exception e){ //e.printStackTrace(); System.out.println(enStr + "不符合規則!"); return null; } } private Map<Character, String> getCodeMap() { if(codeMap == null){ codeMap = new HashMap<Character, String>(); codeMap.put('0', "I"); codeMap.put('1', "L"); codeMap.put('2', "O"); codeMap.put('3', "V"); codeMap.put('4', "E"); codeMap.put('5', "M"); codeMap.put('6', "Y"); codeMap.put('7', "D"); codeMap.put('8', "N"); codeMap.put('9', "S"); } return codeMap; } private static ArrayList<Character> valueGetKey(Map<Character, String> map, String value) { Set<Entry<Character, String>> set = map.entrySet(); ArrayList<Character> arr = new ArrayList<Character>(); Iterator<Entry<Character, String>> it = set.iterator(); while(it.hasNext()) { Map.Entry<Character, String> entry = (Map.Entry<Character, String>)it.next(); if(entry.getValue().equals(value)) { char s = (char)entry.getKey(); arr.add(s); } } return arr; } private String getEnglishChars() { if(englishChars == null){ englishChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; } return englishChars; } private SimpleDateFormat getSdf() { if(sdf == null){ sdf = new SimpleDateFormat("yyyyMMdd"); } return sdf; } public ArrayList<Integer> getChangeIndex() { if(changeIndex == null){ changeIndex = new ArrayList<Integer>(); changeIndex.add(1); changeIndex.add(6); changeIndex.add(9); changeIndex.add(13); changeIndex.add(14); changeIndex.add(17); changeIndex.add(19); changeIndex.add(20); } return changeIndex; } /** * 隨機生成指定位數的大寫英文字母串 * @author huzhen * @since 2017/7/12 * @param * */ private String generateRandString(int bits){ String retStr = ""; for(int i=0; i<bits; i++){ retStr = retStr + this.getEnglishChars().charAt((int)(Math.random() * 26)); } return retStr; }

相關推薦

java 加密解密時間

今天獻上一個將時間戳加密成一個21位大寫英文字母串的java程式碼,並附上解密程式碼,思路很簡單,僅供娛樂 private Map<Character, String> codeMap; private String englishChars;

password學4——Java 加密解密之消息摘要算法(MD5 SHA MAC)

加密解密 hash函數 -s -m hmac 可能 正向 技術發展 哈希算法 Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又稱為數字摘要(Digital Digest)。它是一個唯一相

java加密解密

子郵件 openssl sock 天數 file 驗證 word genrsa https 一:1.KeyManagerFactory類(密鑰管理工廠,用來管理密鑰): 構建密鑰庫管理工廠與下例一樣: System.setProperty("javax.net.ssl.k

【小家javaJava中對時間相加減的問題(向前推100天,答案卻讓我匪夷所思)

相關閱讀 【小家java】java5新特性(簡述十大新特性) 重要一躍 【小家java】java6新特性(簡述十大新特性) 雞肋升級 【小家java】java7新特性(簡述八大新特性) 不溫不火 【小家java】java8新特性(簡述十大新特性) 飽受讚譽 【小家java】java9

Unix時間Java中的時間的區別

前言 最近在使用阿里的日誌服務時,遇到了一些Java中Timestamp的坑,所以特意做了瞭解並整理了一下。在這之前首先得介紹一下Unix時間戳: Unix時間戳是從1970年1月1日(UTC

java加密解密技術(3)對稱加密AES

import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; imp

JAVA JDK1.8 時間時間格式化 實用工具類

這是為了個人的方便,也同時為了大家能更好地瞭解與使用獲取時間的各種方法。 不  廢   話, 上  代  碼 : import org.springframework.util.Assert; import java.time.Cloc

JAVA加密解密之凱撒加密(Caesar cipher)演算法

凱撒加密演算法簡介 凱撒加密(Caesar cipher)是一種簡單的訊息編碼方式:它根據字母表將訊息中的每個字母移動常量位k。舉個例子如果k等於3,則在編碼後的訊息中,每個字母都會向前移動3位:a會被替換為d;b會被替換成e;依此類推。字母表末尾將回捲到字母

Java 加密解密工具類AESUtil

package test; /* @auther wjh @date 2018-08-01*/ import java.security.SecureRandom; import javax.crypto.Cipher; import javax.cry

Java加密解密之數字簽名

上一篇帖子,我們講了MAC(訊息認證碼),它可以驗證身份和防篡改。 它的機制是通過通訊雙方都持有相同的祕鑰去實現,祕鑰相同摘要才相同,沒有祕鑰就不能生成正確的摘要資訊。 但是,它有個缺點,就是通訊雙方必須持有相同的祕鑰,解決方法就是使用數字簽名 數字簽名(又稱公鑰數字簽名、

Java加密解密之對稱加密

採用單鑰密碼系統的加密方法,同一個金鑰可以同時用作資訊的加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。 其核心思想是,加密和解密都是同一個祕鑰 對稱加密常用的演算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJAC

Java和php時間轉換問題

總結一下Java 時間戳和PHP時間戳 的轉換問題: 由於精度不同,導致長度不一致,直接轉換錯誤。 JAVA時間戳長度是13位,如:1294890876859 PHP時間戳長度是10位, 如:1294890859 主要最後三位的不同,JAVA時間戳在PHP中使用,去掉後三位,如:129489087

Java 加密解密工具

package com.panda.core.db.util; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import

Java加密解密之MAC(訊息認證碼)

上一篇帖子,我們講了訊息摘要(數字摘要),它是把一個文字/檔案 通過摘要函式(hash函式)計算出一個結果。然後把文字/檔案和摘要結果一同發給接受者 接受者接收到檔案之後,也進行摘要,把兩個摘要結果進行對比。如果一致就說明文字/檔案和摘要是一致的 但是,這裡有個問題,假設A

Java加密解密全解

1 sha加密: 安全雜湊演算法(Secure Hash Algorithm)主要適用於數字簽名標準(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於2^6

Java加密解密之非對稱加密

非對稱加密演算法需要兩個金鑰來進行加密和解密,這兩個祕鑰是公開金鑰(public key,簡稱公鑰)和私有金鑰(private key,簡稱私鑰)。使用公鑰加密的,要使用私鑰解密。反之,使用私鑰加密的,要使用公鑰解密。 和對稱加密的區別是: 對稱加密:加密和解密時使用的是

java獲取當前時間

轉自:https://www.cnblogs.com/zhujiabin/p/6168671.html?utm_source=itdadao&utm_medium=referral 獲取當前時間戳 //方法 一 System.currentTimeMilli

java加密解密和簽名的問題

注意:加密:先用公鑰加密再用私鑰解密             解密:先用私鑰解密再用公鑰解密 因為公鑰加密長度<127 私鑰》127 關於簽名: debug--除錯 release--釋出--正式簽名--android.keystore 應用升級:包名相同   簽名

java加密解密研究6、MD演算法家族

一、簡述 MD5演算法是典型的訊息摘要演算法,其前身有MD2、MD3和MD4演算法,它由MD4、MD3和MD2演算法改進而來。不論是哪一種MD演算法,它們都需要獲得一個隨機長度的資訊併產生一個123位的資訊摘要。如果將這個128位的二進位制摘要資訊換算成十六進位制,可以得到

JAVA加密解密之數字證書

系統之間在進行互動的時候,我們經常會用到數字證書,數字證書可以幫我們驗證身份等,下面我們就來看一下在java中如何使用數字證書。 我們先使用keytool工具生成金鑰庫並匯出公鑰證書。 第一步:生成keyStroe檔案 執行如下命令: keyto