pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

在 JAVA 中使用 AES/GCM 檢測不正確的密鑰

Detecting incorrect key using AES/GCM in JAVA(在 JAVA 中使用 AES/GCM 檢測不正確的密鑰)
本文介紹了在 JAVA 中使用 AES/GCM 檢測不正確的密鑰的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我正在使用 AESGCM 模式下使用 BouncyCastle 加密/解密一些文件.
雖然我證明了錯(cuò)誤的解密密鑰,但也不例外.
我應(yīng)該如何檢查密鑰是否不正確?
我的代碼是這樣的:

I'm using AES to encrypt/decrypt some files in GCM mode using BouncyCastle.
While I'm proving wrong key for decryption there is no exception.
How should I check that the key is incorrect?
my code is this:

    SecretKeySpec   incorrectKey = new SecretKeySpec(keyBytes, "AES");
    IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
    Cipher          cipher = Cipher.getInstance("AES/GCM/NoPadding", "BC");
    byte[] block = new byte[1048576];
    int i;

    cipher.init(Cipher.DECRYPT_MODE, incorrectKey, ivSpec);

    BufferedInputStream fis=new BufferedInputStream(new ProgressMonitorInputStream(null,"Decrypting ...",new FileInputStream("file.enc")));
    BufferedOutputStream ro=new BufferedOutputStream(new FileOutputStream("file_org"));        
    CipherOutputStream dcOut = new CipherOutputStream(ro, cipher);

    while ((i = fis.read(block)) != -1) {
        dcOut.write(block, 0, i);
    }

    dcOut.close();
    fis.close();

謝謝

推薦答案

在 GCM 模式下沒有方法可以檢測到不正確的鍵.您可以檢查的是身份驗(yàn)證標(biāo)簽是否有效,這意味著您使用了正確的密鑰.問題是,如果身份驗(yàn)證標(biāo)簽不正確,那么這可能表明以下各項(xiàng)(或所有內(nèi)容的組合,直至并包括完全替換密文和身份驗(yàn)證標(biāo)簽):

There is no method that you can detect incorrect key in GCM mode. What you can check is if the authentication tag validates, which means you were using the right key. The problem is that if the authentication tag is incorrect then this could indicate each of the following (or a combination of all, up to and including the full replacement of the ciphertext and authentication tag):

  1. 使用了不正確的密鑰;
  2. 計(jì)數(shù)器模式加密數(shù)據(jù)在傳輸過程中被更改;
  3. 其他經(jīng)過身份驗(yàn)證的數(shù)據(jù)已更改;
  4. 身份驗(yàn)證標(biāo)簽本身在傳輸過程中被更改.

您可以做的是發(fā)送額外的數(shù)據(jù)來識(shí)別所使用的密鑰.這可能是一個(gè)可讀的標(biāo)識(shí)符 ("encryption-key-1"),但它也可能是一個(gè) KCV,一個(gè)密鑰檢查值.KCV 通常由使用密鑰加密的零塊或密鑰上的加密安全哈希(也稱為指紋)組成.因?yàn)榱銐K上的加密會(huì)泄漏信息,所以您不應(yīng)該使用它來識(shí)別加密密鑰.

What you could do is send additional data to identify the secret key used. This could be a readable identifier ("encryption-key-1") but it could also be a KCV, a key check value. A KCV normally consists of a zero-block encrypted with the key, or a cryptographically secure hash over the key (also called a fingerprint). Because the encryption over a zero block leaks information you should not use that to identify the encryption key.

您實(shí)際上可以使用 GCM 模式的 AAD 功能來計(jì)算密鑰標(biāo)識(shí)數(shù)據(jù)上的身份驗(yàn)證標(biāo)簽.請(qǐng)注意,您無法區(qū)分指紋泄露和使用不正確的密鑰.但是指紋被意外損壞的可能性比IV、AAD、密文和認(rèn)證標(biāo)簽的整個(gè)結(jié)構(gòu)要小.

You could actually use the AAD feature of GCM mode to calculate the authentication tag over the key identification data. Note that you cannot distinguish between compromise of the fingerprint and using an incorrect key. It's however less likely that the fingerprint is accidentally damaged than the entire structure of IV, AAD, ciphertext and authentication tag.

這篇關(guān)于在 JAVA 中使用 AES/GCM 檢測不正確的密鑰的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請(qǐng)聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Java Remove Duplicates from an Array?(Java從數(shù)組中刪除重復(fù)項(xiàng)?)
How to fix Invocation failed Unexpected Response from Server: Unauthorized in Android studio(如何修復(fù)調(diào)用失敗來自服務(wù)器的意外響應(yīng):在 Android 工作室中未經(jīng)授權(quán))
AES encryption, got extra trash characters in decrypted file(AES 加密,解密文件中有多余的垃圾字符)
AES Error: Given final block not properly padded(AES 錯(cuò)誤:給定的最終塊未正確填充)
AES-256-CBC in Java(Java 中的 AES-256-CBC)
Using BouncyCastle to encrypt with ECIES in Java(在 Java 中使用 BouncyCastle 使用 ECIES 進(jìn)行加密)
主站蜘蛛池模板: 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 工业用品一站式采购平台|南创工品汇-官网|广州南创 | 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 桁架机器人_桁架机械手_上下料机械手_数控车床机械手-苏州清智科技装备制造有限公司 | 淋巴细胞分离液_口腔医疗器材-精欣华医疗器械(无锡)有限公司 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 烟台金蝶财务软件,烟台网站建设,烟台网络推广 | 鑫铭东办公家具一站式定制采购-深圳办公家具厂家直销 | 集菌仪厂家_全封闭_封闭式_智能智能集菌仪厂家-上海郓曹 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 德州网站开发定制-小程序开发制作-APP软件开发-「两山开发」 | 神马影院-实时更新秒播| 电渗析,废酸回收,双极膜-山东天维膜技术有限公司 | 哈希PC1R1A,哈希CA9300,哈希SC4500-上海鑫嵩实业有限公司 | 手板_手板模型制作_cnc手板加工厂-东莞天泓 | 江西自考网 | 浙江宝泉阀门有限公司 | 螺纹三通快插接头-弯通快插接头-宁波舜驰气动科技有限公司 | 贵州自考_贵州自学考试网| 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 烟台金蝶财务软件,烟台网站建设,烟台网络推广 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 中药二氧化硫测定仪,食品二氧化硫测定仪|俊腾百科 | 高博医疗集团上海阿特蒙医院| 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 万濠影像仪(万濠投影仪)百科-苏州林泽仪器 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 双菱电缆-广州电缆厂_广州电缆厂有限公司 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | 烟气换热器_GGH烟气换热器_空气预热器_高温气气换热器-青岛康景辉 | 破碎机锤头_合金耐磨锤头_郑州宇耐机械工程技术有限公司 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 面粉仓_储酒罐_不锈钢储酒罐厂家-泰安鑫佳机械制造有限公司 | 棉柔巾代加工_洗脸巾oem_一次性毛巾_浴巾生产厂家-杭州禾壹卫品科技有限公司 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | LED显示屏_LED屏方案设计精准报价专业安装丨四川诺显科技 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! |