加密演算法的研究與優惠券SN碼的設計

2021-08-20 13:30:43 字數 1352 閱讀 5646

background:之前在做優惠券管理的時候,需要大量的生成優惠券的資訊,因此需要對優惠券的功能設計進行了解。為了防止優惠券被惡意破解和濫用,對加密演算法進行了一定的研究。

加密演算法分類

單向加密(又稱雜湊演算法),雙向加密

單向加密,不可逆,只能加密,不能解密,常用的場景是加密密碼儲存進資料庫,常用的是使用md5加密和sha加密。還有更加強的加密方式包括hmac加密。

雙向加密,包括對稱加密非對稱加密,「對於對稱性加密演算法,資訊接收雙方都需事先知道密匙和加解密演算法且其密匙是相同的,之後便是對資料進行 加解密了。非對稱演算法與之不同,傳送雙方a,b事先均生成一堆密匙,然後a將自己的公有密匙傳送給b,b將自己的公有密匙傳送給a,如果a要給b傳送消 息,則先需要用b的公有密匙進行訊息加密,然後傳送給b端,此時b端再用自己的私有密匙進行訊息解密,b向a傳送訊息時為同樣的道理」[1]。

雜湊演算法(單向加密)

md5, sha1和hmac(穿遞頭資訊+password的hash值),將頭資訊提前告訴接收方[3]。

通過這些演算法,將會生成乙個不可逆的密文,主要利用的方式是同一明文只會生成唯一的密文。

對稱加密

aes, des, 3des

「des是一種分組資料加密技術(先將資料分成固定長度的小資料塊,之後進行加密),速度較快,適用於大量資料加密,而3des是一種基於des的加密演算法,使用3個不同密匙對同乙個分組資料塊進行3次加密,如此以使得密**度更高。

相較於des和3des演算法而言,aes演算法有著更高的速度和資源使用效率,安全級別也較之更高了,被稱為下一代加密標準。[1]」

需要更加詳細

非對稱加密

rsa,dsa,ecc

常見的使用方式

「由於對稱加密演算法的金鑰管理是乙個複雜的過程,金鑰的管理直接決定著他的安全性,因此當資料量很小時,我們可以考慮採用非對稱加密演算法。

在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的金鑰,然後用對稱加密演算法加密資料,這樣我們就整合了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理金鑰的優點。[1]」

總結,最後針對優惠券功能,常用的方法是隨機生成字幕和數字混合的16位碼,但是問題是非常容易出現重複的問題,當需要批量生成的時候,需要反覆確認資料庫是否存在該隨機數,非常影響效率。

refs:

1. 幾種常見加密演算法解析及使用

2. 單向雜湊加密,對稱加密,非對稱加密

3. rest和認證 hmac

構架穩定與可擴充套件的優惠券系統

我們這裡主要考慮這兩個方面的擴充套件 業務擴充套件 變更或新增業務邏輯時,盡量對已有的核心模組影響最小,保證系統整體的穩定性.效能擴充套件 保證系統是可以水平擴充套件的,從而具有應對更高的負載能力.乙個系統的穩定性,除了需要由健壯的 來保證外,架構上的拆分,也會有相當大的影響.比如 我們將易變的模組...

隨機生成資料字母混合的兌換碼(優惠券碼紅包碼)

package com.yzcx.utils description 隨機生成兌換碼 數字和字母的字串 author xgs date 2019 11 2 10 04 public class redeemcodeutils function 生成num位的隨機字串 數字 大小寫字母隨機混排 par...

DES加密演算法中的IP與IP逆置換

今天終於把des加密演算法中的ip置換和其逆置換搞定了,兩個演算法是一樣的,只是置換表的不同而已.測試通過 在此記錄下,供以後自己參考或同樣喜歡c程式設計的人參考.以前c程式寫的少,今後會一直寫下去,寫完des再嘗試一下其它的加密演算法 include include include typedef...