c 加密 java解密錯誤_java解密出錯

展開全部

你那個代碼少得東西太多,我左試右試,都是錯,也不知道你的初始32313133353236313431303231363533e78988e69d8331333332613762值都是什么。

給你寫了一個加密解密的,希望對你有幫助。import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

public class Test {

/**

* 創建密匙

*/

public SecretKey createSecretKey(String algorithm) {

// 聲明KeyGenerator對象

KeyGenerator keygen;

// 聲明 密鑰對象

SecretKey deskey = null;

try {

// 返回生成指定算法的秘密密鑰的 KeyGenerator 對象

keygen = KeyGenerator.getInstance(algorithm);

// 生成一個密鑰

deskey = keygen.generateKey();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

// 返回密匙

return deskey;

}

/**

* 根據密匙進行DES加密

*/

public String encryptToDES(SecretKey key, String info) {

// 定義 加密算法,可用 DES,DESede,Blowfish

String Algorithm = "DES";

// 加密隨機數生成器 (RNG),(可以不寫)

SecureRandom sr = new SecureRandom();

// 定義要生成的密文

byte[] cipherByte = null;

try {

// 得到加密/解密器

Cipher c1 = Cipher.getInstance(Algorithm);

// 用指定的密鑰和模式初始化Cipher對象

// 參數:(ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE,UNWRAP_MODE)

c1.init(Cipher.ENCRYPT_MODE, key, sr);

// 對要加密的內容進行編碼處理,

cipherByte = c1.doFinal(info.getBytes());

} catch (Exception e) {

e.printStackTrace();

}

// 返回密文的十六進制形式

return byte2hex(cipherByte);

}

/**

* 根據密匙進行DES解密

*/

public String decryptByDES(SecretKey key, String sInfo) {

// 定義 加密算法,

String Algorithm = "DES";

// 加密隨機數生成器 (RNG)

SecureRandom sr = new SecureRandom();

byte[] cipherByte = null;

try {

// 得到加密/解密器

Cipher c1 = Cipher.getInstance(Algorithm);

// 用指定的密鑰和模式初始化Cipher對象

c1.init(Cipher.DECRYPT_MODE, key, sr);

// 對要解密的內容進行編碼處理

cipherByte = c1.doFinal(hex2byte(sInfo));

} catch (Exception e) {

e.printStackTrace();

}

// return byte2hex(cipherByte);

return new String(cipherByte);

}

/**

* 將二進制轉化為16進制字符串

*/

public String byte2hex(byte[] b) {

String hs = "";

String stmp = "";

for (int n = 0; n < b.length; n++) {

stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));

if (stmp.length() == 1) {

hs = hs + "0" + stmp;

} else {

hs = hs + stmp;

}

}

return hs.toUpperCase();

}

/**

* 十六進制字符串轉化為2進制

*/

public byte[] hex2byte(String hex) {

byte[] ret = new byte[8];

byte[] tmp = hex.getBytes();

for (int i = 0; i < 8; i++) {

ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);

}

return ret;

}

public static byte uniteBytes(byte src0, byte src1) {

byte _b0 = Byte.decode("0x" + new String(new byte[] { src0 }))

.byteValue();

_b0 = (byte) (_b0 << 4);

byte _b1 = Byte.decode("0x" + new String(new byte[] { src1 }))

.byteValue();

byte ret = (byte) (_b0 ^ _b1);

return ret;

}

public static void main(String[] args) {

Test jiami = new Test();

// 生成一個DES算法的密匙

SecretKey key = jiami.createSecretKey("DES");

// 用密匙加密信息"Hello world!"

String str1 = jiami.encryptToDES(key, "Hello");

System.out.println("使用des加密信息Hello為:" + str1);

// 使用這個密匙解密

String str2 = jiami.decryptByDES(key, str1);

System.out.println("解密后為:" + str2);

}

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385895.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385895.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385895.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis成神之路電子版教程已問世,面試題+筆記+項目實戰

前言 我想對所有程序員說&#xff1a;除了看視頻、做項目來提高自身的技術之外&#xff0c;還有一種提升自己的專業技能就是&#xff1a;多&#xff01;看&#xff01;書&#xff01;&#xff08;本文內提到的書單筆者整理出了一份電子檔作為分享&#xff0c;文末有免費獲取方式…

java 中的event_Java中this與event有什么不同

Java中this與event有什么不同發布時間&#xff1a;2021-02-11 10:37:25來源&#xff1a;億速云閱讀&#xff1a;61作者&#xff1a;LeahJava中this與event有什么不同&#xff1f;相信很多沒有經驗的人對此束手無策&#xff0c;為此本文總結了問題出現的原因和解決方法&#xff…

Redis有幾種數據類型?文末領取面試資料

前言 其實前幾篇文章已經寫了好多有關于Spring源碼的文章&#xff0c;事實上&#xff0c;很多同學雖然一直在跟著閱讀、學習這些Spring的源碼教程&#xff0c;但是一直都很迷茫&#xff0c;這些Spring的源碼學習&#xff0c;似乎只是為了面試吹逼用&#xff0c;我大概問過一些…

java 多重屬性_最全面的44個Java 性能調優細節

我認為&#xff0c;代碼優化的最重要的作用應該是&#xff1a;避免未知的錯誤。在代碼上線運行的過程中&#xff0c;往往會出現很多我們意想不到的錯誤&#xff0c;因為線上環境和開發環境是非常不同的&#xff0c;錯誤定位到最后往往是一個非常小的原因。然而為了解決這個錯誤…

Redis靈魂14問?真香

前言 今日博主聽聞&#xff0c;現在很多培訓出來的應屆生薪資都趕上了摸爬滾打兩三年的朋友&#xff0c;講道理&#xff0c;這說不過去啊 作為同行來說&#xff0c;這個行業發展很快&#xff0c;技術更新很快&#xff0c;淘汰也很快&#xff0c;千萬不要再找借口了&#xff0…

java主流微服務框架_Spring Boot作為當下最流行的微服務開發框架,一名合格的Java開發者一定有所了解,...

Spring Boot作為當下最流行的微服務開發框架&#xff0c;一名合格的Java開發者一定有所了解&#xff0c;Spring Boot相對于傳統的SSM框架來說&#xff1a;springboot使用了特定的配置方式&#xff0c;開發人員不需要再定義樣板化的配置&#xff0c;簡化項目的初始構建springboo…

Redis面試復習大綱在手面試不慌,內含福利

前言 這幾年在Java工程師招聘時&#xff0c;會看到很多人的簡歷都寫著使用了Spring Cloud做微服務實現&#xff0c;使用Docker做自動化部署&#xff0c;并且也會把這些做為自己的亮點。而比較有趣的這其中以小公司出來的人為絕大多數&#xff0c;大的公司出來的人簡歷上倒是很…

java注解編程_Java注解編程原理

一、先了解以下4個元注解Documented具體來說是生成說明文檔時把類的解釋添加進去。Inherited 允許子類繼承父類中的注解Target 表示該注解用于什么地方&#xff0c;可能的值在枚舉類 ElemenetType 中public enum ElementType {TYPE, //給類(型)注解FIELD, //給字段注解&#x…

Redis面試復習大綱在手面試不慌,講的明明白白!

前言 面試時間將近兩個小時&#xff08;期間等待二面面試官來面我的時候等了半個多小時&#xff09;面試官問的東西很多&#xff0c;還挖了好幾個坑&#xff0c;一個技術點套著一個技術點的問&#xff0c;一定要做好萬全的準備。問了一些基本層面上的技術點都答出來了&#xf…

python sendline_python Pexpect模塊的使用

Pexpect簡介在講解Pexpect之前&#xff0c;我們需要先了解一下Expect這個腳本語言&#xff0c;它是由TCL語言實現的&#xff0c;主要用于人機交互式對話的自動化控制&#xff0c;可以用來完成ssh、ftp、telnet等命令行程序的自動化交互。Pexpect其實就是一個用Python語言實現的…

RocketMQ消息丟失場景及解決辦法,已拿offer入職

前言 當前我們都會說SpringBoot是Spring框架對“約定優先于配置理念的最佳實踐的產物&#xff0c;一個典型的SpringBoot應用本質上其實就是一個基于Spring框架的應用&#xff0c;而如果大家對Spring框架已經了如指掌&#xff0c;那么&#xff0c;在我們一步步揭開SpringBoot微…

java抓rtp包_Wireshark抓取RTP包,還原語音

最近在做基于SIP的VoIP通信研究&#xff0c;使用Wireshark軟件可以對網絡流量進行抓包。VoIP使用RTP協議對語音數據進行傳輸&#xff0c;語音載荷都封裝在RTP包里面。要對傳輸中的語音進行截獲和還原&#xff0c;需要通過Wireshark對RTP包進行分析和解碼。該過程如下&#xff1…

RocketMQ消費者是如何獲取消息的?轉瘋了!

前言 前兩天&#xff0c;我收到了螞蟻金服的offer&#xff0c;從朋友的內推開始面試到拿到最后offer經歷了4面技術、一面交叉面和一面HR面。經過了漫長的等待和幾次幾乎折磨的面試之后&#xff0c;終于拿到了offer。 第1章&#xff1a;Dubbo的簡史、后續的規劃和整體架構大圖 …

java if在內存中_java如何將對象暫存到內存中?

展開全部form表單提交文件&#xff0c;建議用62616964757a686964616fe59b9ee7ad9431333264623862smartupload上傳&#xff0c;暫存在web服務器目錄下&#xff0c;然后稍微一下下面的代碼&#xff0c;ftp上傳后&#xff0c;刪除暫存文件&#xff0c;okimport java.io.File;impor…

K8S+Docker理論與實踐深度集成

前言&#xff1a; 這篇文章主要介紹了26道Spring經典面試題總結(附帶答案)的相關資料,小編在網上看到的覺得挺不錯的&#xff0c;現在分享給大家&#xff0c;希望對你們有所幫助。 另外本人整理收藏了多家公司面試知識點整理 &#xff0c;以及各種Java核心知識點免費分享給大…

java 注解 方法 參數_java在注解中綁定方法參數的解決方案

我們有這樣子的需求&#xff0c;需要記錄用戶操作某個方法的信息并記錄到日志里面&#xff0c;例如&#xff0c;用戶在保存和更新任務的時候&#xff0c;我們需要記錄下用戶的ip&#xff0c;具體是保存還是更新&#xff0c;調用的是哪個方法&#xff0c;保存和更新的任務名稱以…

Kafka的精髓全寫這本“限量筆記”里了

前言 大廠面試真題向來是求職者的最佳練兵場&#xff0c;華為在Java開發工程師招聘中有哪些技術性考察和傾向&#xff1f;那今天咱就給大家分享一下近期的華為5面面經&#xff01; 注&#xff1a;以下所分享的華為面試問題&#xff0c;相關的答案我也整理出來了&#xff0c;且…

gcc是java的什么意思_為什么gcc支持Java而不是C#

我已經seen this question了,我想知道是否有任何技術理由可以證明gcc支持Java但不支持C#.如果我理解,Java也是一種解釋性語言.如果Mono提供C#編譯器和CIL的實現,為什么不能創建一個將C#轉換為IL然后靜態編譯的gcc c#編譯器&#xff1f;解決方法:如果編譯器工具鏈不支持特定語言…

MongoDB數據分布不均的解決方案

前言 算法血拼&#xff1a;Google百度Alibaba字節Tencent網易360拼夕夕美團 不知不覺雙11就來了,轟轟烈烈的秋招也完美結束了,不知算法與數據結構成為了多少小伙伴進擊大廠的絆腳石&#xff1f; 恰好&#xff0c;我這兩天花了點時間&#xff0c;整理了些各大廠&#xff08;G…

Mybatis-plus常用API全套教程

前言 前兩天&#xff0c;我收到了螞蟻金服的offer&#xff0c;從朋友的內推開始面試到拿到最后offer經歷了4面技術、一面交叉面和一面HR面。經過了漫長的等待和幾次幾乎折磨的面試之后&#xff0c;終于拿到了offer。 正文 下文中截圖來源于朋友一個pdf版本的面經&#xff0c;…