电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JAVA加密算法數字簽名實現原理詳解

瀏覽:25日期:2022-08-22 13:24:28

所謂數字簽名就是信息發送者用其私鑰對從所傳報文中提取出的特征數據(或稱數字指紋)進行 RSA 算法操作,以保證發信人無法抵賴曾發過該信息(即不可抵賴性),同時也確保信息報文在經簽名后末被篡改(即完整性)。當信息接收者收到報文后,就可以用發送者的公鑰對數字簽名進行驗證。

在數字簽名中有重要作用的數字指紋是通過一類特殊的散列函數(HASH 函數)生成的,對這些 HASH 函數的特殊要求是:

1:接受的輸入報文數據沒有長度限制;

2:對任何輸入報文數據生成固定長度的摘要(數字指紋)輸出

3:從報文能方便地算出摘要;

4:難以對指定的摘要生成一個報文,而由該報文反推算出該指定的摘要;

5:兩個不同的報文難以生成相同的摘要

代表:DSA

代碼如下

package test;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.Signature;public class DSA {public static void main(String[] args) {try {DSA my = new DSA();my.run();} catch (Exception e) {e.printStackTrace();}}public void run() {// 數字簽名生成密鑰// 第一步生成密鑰對,如果已經生成過 , 本過程就可以跳過// 對用戶來講 myprikey.dat 要保存在本地,而 mypubkey.dat 給發布給其它用戶if ((new java.io.File('myprikey.dat')).exists() == false) {if (generatekey() == false) {System.out.println('生成密鑰對敗');return;}}// 第二步 , 此用戶// 從文件中讀入私鑰 , 對一個字符串進行簽名后保存在一個文件 (myinfo.dat) 中// 并且再把 myinfo.dat 發送出去,為了方便數字簽名也放進了 myifno.dat 文件中 , 當然也可分別發送try {ObjectInputStream in = new ObjectInputStream(new FileInputStream('myprikey.dat'));PrivateKey myprikey = (PrivateKey) in.readObject();in.close();String myinfo = '這是我的信息'; // 要簽名的信息// 用私鑰對信息生成數字簽名Signature signet = Signature.getInstance('DSA');signet.initSign(myprikey);signet.update(myinfo.getBytes());byte[] signed = signet.sign(); // 對信息的數字簽名System.out.println('signed( 簽名內容 )=' + byte2hex(signed));// 把信息和數字簽名保存在一個文件中ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream('myinfo.dat'));out.writeObject(myinfo);out.writeObject(signed);out.close();System.out.println('簽名并生成文件成功');} catch (java.lang.Exception e) {e.printStackTrace();System.out.println('簽名并生成文件失敗');}// 第三步 獲得信息檢查// 其他人通過公共方式得到此戶的公鑰和文件// 其他人用此戶的公鑰 , 對文件進行檢查 , 如果成功說明是此用戶發布的信息 .try {ObjectInputStream in = new ObjectInputStream(new FileInputStream('mypubkey.dat'));PublicKey pubkey = (PublicKey) in.readObject();in.close();System.out.println(pubkey.getFormat());in = new ObjectInputStream(new FileInputStream('myinfo.dat'));String info = (String) in.readObject();byte[] signed = (byte[]) in.readObject();in.close();Signature signetcheck = Signature.getInstance('DSA');signetcheck.initVerify(pubkey);signetcheck.update(info.getBytes());if (signetcheck.verify(signed)) {System.out.println('info=' + info);System.out.println('簽名正常');} elseSystem.out.println('非簽名正常');} catch (java.lang.Exception e) {e.printStackTrace();};}// 生成一對文件 myprikey.dat 和 mypubkey.dat 私鑰和公鑰// 公鑰要用戶發送 ( 文件 , 網絡等方法 ) 給其它用戶 , 私鑰保存在本地public boolean generatekey() {try {KeyPairGenerator keygen = KeyPairGenerator.getInstance('DSA');keygen.initialize(512);KeyPair keys = keygen.genKeyPair();PublicKey pubkey = keys.getPublic();PrivateKey prikey = keys.getPrivate();ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream('myprikey.dat'));out.writeObject(prikey);out.close();System.out.println('寫入對象 prikeys ok');out = new ObjectOutputStream(new FileOutputStream('mypubkey.dat'));out.writeObject(pubkey);out.close();System.out.println('寫入對象 pubkeys ok');System.out.println('生成密鑰對成功');return true;} catch (java.lang.Exception e) {e.printStackTrace();System.out.println('生成密鑰對失敗');return false;}}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;elsehs = hs + stmp;if (n < b.length - 1)hs = hs + ':';}return hs.toUpperCase();}}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 防水套管厂家-柔性防水套管-不锈钢|刚性防水套管-天翔管道 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 南京交通事故律师-专打交通事故的南京律师 | 客服外包专业服务商_客服外包中心_网萌科技| 免费网站网址收录网_海企优网站推荐平台 | 液氨泵,液化气泵-淄博「亚泰」燃气设备制造有限公司 | 电缆接头_防水接头_电缆防水接头_防水电缆接头_上海闵彬 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 快干水泥|桥梁伸缩缝止水胶|伸缩缝装置生产厂家-广东广航交通科技有限公司 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | DDoS安全防护官网-领先的DDoS安全防护服务商 | 小型玉石雕刻机_家用玉雕机_小型万能雕刻机_凡刻雕刻机官网 | 冰晶石|碱性嫩黄闪蒸干燥机-有机垃圾烘干设备-草酸钙盘式干燥机-常州市宝康干燥 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 快速门厂家-快速卷帘门-工业快速门-硬质快速门-西朗门业 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 密集架-密集柜厂家-智能档案密集架-自动选层柜订做-河北风顺金属制品有限公司 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | 标准件-非标紧固件-不锈钢螺栓-非标不锈钢螺丝-非标螺母厂家-三角牙锁紧自攻-南京宝宇标准件有限公司 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 磷酸肌酸二钠盐,肌酐磷酰氯-沾化欣瑞康生物科技| 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 右手官网|右手工业设计|外观设计公司|工业设计公司|产品创新设计|医疗产品结构设计|EMC产品结构设计 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 江西自考网-江西自学考试网| 方源木业官网-四川木门-全国木门专业品牌| 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | 东风体检车厂家_公共卫生体检车_医院体检车_移动体检车-锦沅科贸 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 聚氨酯复合板保温板厂家_廊坊华宇创新科技有限公司 | 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 |