![]() |
||
*停權中*
加入日期: Dec 2010
文章: 341
|
![]() 請問 AES加密
根據網路上的 在此段是開始加密 其中raw是要加密的內容 clear是private_key 引用:
如果我要將raw先填充一些東西 如下JavaScript的 JavaScript的block就是上面的raw 引用:
請問我該如何加入? 謝謝 |
|||||||||
![]() |
![]() |
*停權中*
加入日期: Jul 2013
文章: 331
|
我建議你要問應該去幾個專門討論程式設計的網站比較會有快一點的回應
藍色小舖、程式設計俱樂部應該比較多人 JAVA那邊好像也有不錯的論壇 微軟就不用說了 MSDN 那邊一堆 在這裡問我怕是會影響到你的專案進度 |
||
![]() |
![]() |
Major Member
![]() 加入日期: Mar 2011
文章: 108
|
這大3修資訊安全實做過的東西...
你的程度 ![]()
__________________
![]() ![]() ![]() ![]() |
![]() |
![]() |
Major Member
![]() 加入日期: Dec 2004
文章: 208
|
看你的code很多函數都是內建的
看不出來裡面是什麼 AES有很多加密法 不是只有一種 小弟我只用過CBC法 看C語言,直接看source code會比較清楚 看過openssl、cyassl裡面都有 |
![]() |
![]() |
Major Member
![]() 加入日期: Dec 2012
文章: 182
|
樓主之前面問過的也沒後續回應,到底有沒有解決問題也不說一下,
遇到問題就貼個ㄧ小段code,前言後語背景也不講一下, 都是這領域最令人討厭的行為, 去一些軟體或程式論壇看會不會有人理。 |
![]() |
![]() |
*停權中*
加入日期: Dec 2010
文章: 341
|
抱歉
因為目前AES加密 是用javascript 來做AES 原始參考的是 http://point-at-infinity.org/jsaes/jsaes.js 裡面的範例去修改的 可是 手邊版本的 1.江AES_ExpandKey給關閉 2. 然後使用類似 代碼:
* AES_Init(); * * var block = new Array(16); * for(var i = 0; i < 16; i++) * block[i] = 0x11 * i; * * var key = new Array(32); * for(var i = 0; i < 32; i++) * key[i] = i; * * AES_ExpandKey(key); * AES_Encrypt(block, key); * * AES_Done(); 只是部分修改 但因為安全問題 想要改回直接使用JAVA 而JAVA部分 我是參考網路SimpleCrypto http://www.androidsnippets.com/encryptdecrypt-strings 目前看到 代碼:
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/ZeroBytePadding"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(clear); return encrypted; } 因此請問該如何改? 謝謝 |
![]() |
![]() |
Major Member
![]() 加入日期: Dec 2004
文章: 208
|
你可能要先搞懂
AES_Init();裡面做了什麼事 AES_ExpandKey(key);對傳進去的key做了什麼修改 AES_Encrypt(block, key);這裡用的encrypt法是哪種方法把key跟block結合 AES_Done();這又是幹什麼的? 通常block與key結合後應該就做完了 |
![]() |
![]() |
*停權中*
加入日期: Dec 2010
文章: 341
|
引用:
研究了2天 裡面還沒全懂 但是知道 AES_Init() ----->預先準備好要加密用的一些物件 AES_ExpandKey(key); 展開金鑰 用於加密時不要有重複 (但是前輩因為公司spec的需要 將此部份移除 ) AES_Encrypt(block, key);<----目前卡在 需要對block作額外的處理.填充額外的字元 AES_Done();整個加密完成.移除物件 昨天問的javascript 其實也是這個 '公司spec特殊'版的AES的需求 同樣用於塞入填充字元 因為改寫成java才知道用途 謝謝 還請提示該如何直接修正SimpleCrypto於 代碼:
private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception { SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/ZeroBytePadding"); cipher.init(Cipher.ENCRYPT_MODE, skeySpec); byte[] encrypted = cipher.doFinal(clear); return encrypted; } 部分 對於傳入的raw做部分的填充 謝謝 |
|
![]() |
![]() |
*停權中*
加入日期: Jan 2002 您的住址: 台北
文章: 172
|
居然可以在這裡看到有人用過 cyassl , 真是太訝異了
這我的team 有用,還實做了硬體加速器,pcdvd 果然是臥虎藏龍 |
![]() |
![]() |
Amateur Member
![]() 加入日期: Jun 2002 您的住址: 太陽系
文章: 32
|
raw是要加密的內容
那你為什麼要在加密函數中向raw中加東西??? 要加密的內容應該在呼叫加密函數前就處理完成 PS.你的軟體設計概念很有問題 動不動就到處加一些針對性的程式碼 萬一以後需要維護的話會很辛苦.... 去Google看一下耦合度的概念吧 |
![]() |
![]() |