国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語(yǔ)言|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - plsql實(shí)現(xiàn)DES對(duì)稱加密 Java解密

plsql實(shí)現(xiàn)DES對(duì)稱加密 Java解密

2021-08-10 12:06鄭劍峰 Java教程

這篇文章主要介紹了plsql實(shí)現(xiàn)DES對(duì)稱加密 Java解密的方法,幫助大家更好的理解和學(xué)習(xí)使用Oracle與Java,感興趣的朋友可以了解下

背景

某項(xiàng)目接口采用plsql開(kāi)發(fā),接口返回用戶密碼,但要求密碼不能是明文返回,因?yàn)槌绦騼?nèi)部需要用到明文密碼,所以只能在plsql中對(duì)密碼進(jìn)行對(duì)稱加密,在程序內(nèi)部進(jìn)行解密,程序采用java開(kāi)發(fā)。

實(shí)現(xiàn)

dbms_crypto是oracle自帶的加密包,包含多種加密解密方法,非dba用戶需要授權(quán)才能進(jìn)行使用

?
1
grant execute on dbms_crypto to xxx;  

下面是一個(gè)通過(guò)DES算法加密的function

?
1
2
3
4
5
6
7
8
9
10
function encrypt_password(p_password in varchar2) return varchar2 is  
   v_key           varchar2(32) := 'TucM2fYDaxnd1UeRL7HVvyshXvXaMKO9';  
   v_encrypted_raw RAW(256);  
 begin  
   v_encrypted_raw := dbms_crypto.Encrypt(src => UTL_RAW.CAST_TO_RAW(p_password),  
                                          typ => DBMS_CRYPTO.DES_CBC_PKCS5,  
                                          iv=>UTL_RAW.CAST_TO_RAW('12345678'),  
                                          key => UTL_RAW.CAST_TO_RAW(v_key));  
   return utl_raw.cast_to_varchar2(utl_encode.base64_encode(v_encrypted_raw));  
  end;  
  • v_key:密鑰
  • typ:加密算法,這里采用DES加密算法,可以使用密鑰進(jìn)行加密,使用相同的密鑰進(jìn)行解密,DES_CBC_PKCS5分為三段,DES表示加密算法是DES,CBC表示使用CBC模式進(jìn)行加密,PKCS5表示分組的填充方式,大部分情況下,明文并非剛好64位的倍數(shù)。對(duì)于最后一個(gè)分組,如果長(zhǎng)度小于64位,則需要用數(shù)據(jù)填充至64位。PKCS5Padding是常用的填充方式,如果沒(méi)有指定,默認(rèn)的方式就是它。
  • iv:如果是采用CBC模式進(jìn)行加密,需要指定始化向量IV

這里將返回值進(jìn)行了base64的編碼,因?yàn)榧用艹鰜?lái)的數(shù)據(jù)可能是二進(jìn)制數(shù)據(jù),為了便于傳輸進(jìn)行了base64編碼,以下是測(cè)試的結(jié)果

?
1
2
輸入:zhengjianfeng  
輸出:N8pbaNezTEJO34jIgJhUFg==  

java解密

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import javax.crypto.Cipher;  
import javax.crypto.SecretKeyFactory;  
import javax.crypto.spec.DESKeySpec;  
import javax.crypto.spec.IvParameterSpec;  
import java.security.Key;  
import java.util.Base64;  
/** 
 * @Description: 
 * @author: jianfeng.zheng 
 * @since: 2021/2/20 12:12 上午 
 * @history: 1.2021/2/20 created by jianfeng.zheng 
 */  
public class DesDecryptDemo {  
    private final static String IV_PARAMETER = "12345678";  
    private static final String ALGORITHM = "DES";  
    private static final String CIPHER_ALGORITHM = "DES/CBC/PKCS5Padding";  
    private static final String CHARSET = "utf-8";  
    private static final String KEY = "TucM2fYDaxnd1UeRL7HVvyshXvXaMKO9";  
    public static void main(String[] args) {  
        String encryptData = "N8pbaNezTEJO34jIgJhUFg==";  
        System.out.println("密文:" + encryptData);  
        String plainText = decrypt(KEY, encryptData);  
        System.out.println("明文:" + plainText);  
    }  
    public static String decrypt(String key, String data) {  
        if (key == null || key.length() < 8) {  
            throw new RuntimeException("加密失敗,key不能小于8位");  
        }  
        if (data == null) {  
            return null;  
        }  
        try {  
            DESKeySpec dks = new DESKeySpec(key.getBytes(CHARSET));  
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);  
            Key secretKey = keyFactory.generateSecret(dks);  
            Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);  
            //設(shè)置始化向量  
            IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes(CHARSET));  
            cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);  
            return new String(cipher.doFinal(Base64.getDecoder().decode(data.getBytes(CHARSET))), CHARSET);  
        catch (Exception e) {  
            e.printStackTrace();  
            return data;  
        }  
    }  
}  

運(yùn)行結(jié)果

?
1
2
密文:N8pbaNezTEJO34jIgJhUFg==  
明文:zhengjianfeng  

可以看到是可以拿到明文的

以上就是plsql實(shí)現(xiàn)DES對(duì)稱加密 Java解密的詳細(xì)內(nèi)容,更多關(guān)于plsql對(duì)稱加密 java解密的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://zhengjianfeng.cn/?p=511

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 黄色一级毛片网站 | 亚洲aⅴ天堂av在线电影软件 | 亚洲一区二区三区四区的 | 免费国产视频 | 黄色电影天堂 | 日韩中文一区 | 久久这里精品 | 亚洲国产精品久久久久久 | 日本免费视频 | 精品久久一区二区 | 亚洲热av| 黄瓜av| 黄色影片免费在线观看 | 一区二区三区视频在线观看 | 一区二区久久 | 毛片免费观看视频 | 久久精品国语 | 亚洲综合色网 | 欧美一区二区三区 | 国偷自产av一区二区三区 | 综合色久 | 性色av一区二区三区 | 综合久| 91精品国产乱码久久久久久 | av久久 | 91精品国产91久久久久久最新 | 一级一片免费看 | 99精品欧美一区二区三区 | 国产在线一二三区 | 在线免费观看黄色 | 国产伦精品一区二区三区四区视频 | av黄色在线免费观看 | 国产一区精品在线 | 成人片网址 | 少妇精品久久久久久久久久 | 国产高清一区 | 青青久久久 | 91精品国产91久久综合桃花 | 久久综合888 | 黄色高清网站 | 日本三级精品视频 |