代碼簽名java 代碼簽名證書(shū) 個(gè)人

Java Verified 移動(dòng)代碼簽名證書(shū)是什么?

Java Verified 是全球可信的測(cè)試及簽發(fā)項(xiàng)目,用于確保開(kāi)發(fā)者及無(wú)線運(yùn)營(yíng)商可以安心地開(kāi)發(fā),傳播及貨幣化移動(dòng)應(yīng)用程序。作為一個(gè)開(kāi)放的,行業(yè)所需的舉措,Java Verified 是由 Unified Testing Initiative(UTI)開(kāi)發(fā)的,建設(shè)檢測(cè)框架的首個(gè)項(xiàng)目。Java Verified 是用于申請(qǐng) Symbian Java 認(rèn)證(Certified Signed)所須的代碼簽名證書(shū)。Java Verified 證書(shū)有效期為一年。比如GlobalSign證書(shū)就是這樣的。

創(chuàng)新互聯(lián)專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、東平網(wǎng)絡(luò)推廣、小程序制作、東平網(wǎng)絡(luò)營(yíng)銷(xiāo)、東平企業(yè)策劃、東平品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供東平建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:m.kartarina.com

如何從java生成簽名在AWS問(wèn)題,怎么解決

Java2下Applet數(shù)字簽名實(shí)現(xiàn)過(guò)程如下:

在代碼的分發(fā)端:

(1)開(kāi)發(fā)Java源程序并對(duì)其進(jìn)行編譯。

(2)用JAR工具對(duì)類(lèi)文件和資源文件進(jìn)行封裝。

(3)用keytool創(chuàng)建公鑰和密鑰,生成X。509V1簽名證書(shū),輸出證書(shū)。

(4)通過(guò)jarsigner工具用生成的密鑰對(duì)JAR文件進(jìn)行數(shù)字簽名。

在代碼的接收端:

(1)用keytool輸入證書(shū)視其為可信任。

(2)用policytool創(chuàng)建和修改安全性策略配置文件,授權(quán)請(qǐng)求的訪問(wèn)權(quán)限。

(3)從網(wǎng)絡(luò)取得字節(jié)碼,用公鑰驗(yàn)證數(shù)字簽名證書(shū)和文檔代碼的完整性。

(4)驗(yàn)證字節(jié)碼的合法性,根據(jù)策略文件分配相應(yīng)權(quán)限。

(5)執(zhí)行代碼,完成后被垃圾回收器回收內(nèi)存。

在用公鑰驗(yàn)證數(shù)字簽名證書(shū)之前,接收方需要確認(rèn)公鑰自身的可靠性,因此通常情況是提供一個(gè)包含公鑰的證書(shū)而不是公鑰自身。1個(gè)證書(shū)包括:

(1)1個(gè)公鑰。

(2)1個(gè)唯一的名字實(shí)體(個(gè)人或公司),它是證書(shū)的所有者,包含用戶(hù)名字、公司、組織、城市、地址、國(guó)家代碼、省份等信息。

(3)數(shù)字簽名:1個(gè)證書(shū)被1個(gè)分發(fā)者的實(shí)體簽名,保證證書(shū)確實(shí)包含另1個(gè)實(shí)體(所有者)的公鑰。

Java加密和數(shù)字簽名 1消息摘要

本文主要談一下密碼學(xué)中的加密和數(shù)字簽名 以及其在java中如何進(jìn)行使用 對(duì)密碼學(xué)有興趣的伙伴 推薦看Bruce Schneier的著作 Applied Crypotography 在jdk 的發(fā)行版本中安全性方面有了很大的改進(jìn) 也提供了對(duì)RSA算法的直接支持 現(xiàn)在我們從實(shí)例入手解決問(wèn)題(本文僅是作為簡(jiǎn)單介紹)

一 密碼學(xué)上常用的概念

)消息摘要

這是一種與消息認(rèn)證碼結(jié)合使用以確保消息完整性的技術(shù) 主要使用單向散列函數(shù)算法 可用于檢驗(yàn)消息的完整性 和通過(guò)散列密碼直接以文本形式保存等 目前廣泛使用的算法有MD MD SHA jdk 對(duì)上面都提供了支持 在java中進(jìn)行消息摘要很簡(jiǎn)單 java security MessageDigest提供了一個(gè)簡(jiǎn)易的操作方法

Java代碼

/***MessageDigestExample java*Copyright */import java security MessageDigest;/***單一的消息摘要算法 不使用密碼 可以用來(lái)對(duì)明文消息(如 密碼)隱藏保存*/public class MessageDigestExample{ public static void main(String[] args) throws Exception{if(args length!= ){ System err println( Usage:java MessageDigestExample text ); System exit( );}byte[] plainText=args[ ] getBytes( UTF );//使用getInstance( 算法 )來(lái)獲得消息摘要 這里使用SHA 的 位算法MessageDigest messageDigest=MessageDigest getInstance( SHA );System out println( +messageDigest getProvider() getInfo());//開(kāi)始使用算法messageDigest update(plainText);System out println( Digest: );//輸出算法運(yùn)算結(jié)果System out println(new String(messageDigest digest() UTF )); }}

lishixinzhi/Article/program/Java/gj/201311/27287

Java加密和數(shù)字簽名

Java加密和數(shù)字簽名本文主要談一下密碼學(xué)中的加密和數(shù)字簽名 以及其在java中如何進(jìn)行使用 對(duì)密碼學(xué)有興趣的伙伴 推薦看 Bruce Schneier的著作 Applied Crypotography 在jdk 的發(fā)行版本中安全性方面有了很大的改進(jìn) 也提供了對(duì)RSA算法的直接支持 現(xiàn)在我們從實(shí)例入手解決問(wèn)題(本文僅是作為簡(jiǎn)單介紹)

一 密碼學(xué)上常用的概念 

)消息摘要

這是一種與消息認(rèn)證碼結(jié)合使用以確保消息完整性的技術(shù) 主要使用單向散列函數(shù)算法 可用于檢驗(yàn)消息的完整性 和通過(guò)散列密碼直接以文本形式保存等 目前廣泛使用的算法有MD MD SHA jdk 對(duì)上面都提供了支持 在java中進(jìn)行消息摘要很簡(jiǎn)單 java security MessageDigest提供了一個(gè)簡(jiǎn)易的操作方法

/**??? *MessageDigestExample java??? *Copyright ??? */??? import java security MessageDigest;??? /**??? *單一的消息摘要算法 不使用密碼 可以用來(lái)對(duì)明文消息(如 密碼)隱藏保存??? */??? public class MessageDigestExample{???  public static void main(String[] args) throws Exception{??? if(args length!= ){???  System err println( Usage:java MessageDigestExample text );???  System exit( );??? }

byte[] plainText=args[ ] getBytes( UTF );

//使用getInstance( 算法 )來(lái)獲得消息摘要 這里使用SHA 的 位算法??? MessageDigest messageDigest=MessageDigest getInstance( SHA );

System out println( \n +messageDigest getProvider() getInfo());??? //開(kāi)始使用算法??? messageDigest update(plainText);??? System out println( \nDigest: );??? //輸出算法運(yùn)算結(jié)果??? System out println(new String(messageDigest digest() UTF ));???  }??? }??? 還可以通過(guò)消息認(rèn)證碼來(lái)進(jìn)行加密實(shí)現(xiàn) javax crypto Mac提供了一個(gè)解決方案 有興趣者可以參考相關(guān)API文檔 本文只是簡(jiǎn)單介紹什么是摘要算法

這里補(bǔ)充另一個(gè)運(yùn)用消息摘要的方式加密的例子:??? public class TestEncrypt {

public TestEncrypt() {??????? }

/**???????? * @param strSrc :strSrc is a string will be encrypted ???????? * @param encName : encName is the algorithm name will be used ???????? *??????????????? encName dafault to MD ???????? * @return String???????? */??????? public String Encrypt(String strSrc String encName) {

MessageDigest md = null;??????????? String strDes = null;

byte[] bt = strSrc getBytes();??????????? try {??????????????? if (encName == null || encName equals( )) {??????????????????? encName = MD ;??????????????? }??????????????? md = MessageDigest getInstance(encName);??????????????? md update(bt);??????????????? strDes = bytes Hex(md digest()); //to HexString??????????? }??????????? catch (NoSuchAlgorithmException e) {??????????????? System out println( Invalid algorithm );??????????????? return null;??????????? }??????????? return strDes;??????? }

public String bytes Hex(byte[] bts) {??????????? String des = ;??????????? String tmp = null;??????????? for (int i = ; i bts length; i++) {??????????????? tmp = (Integer toHexString(bts[i] xFF));??????????????? if (tmp length() == ) {??????????????????? des += ;??????????????? }??????????????? des += tmp;??????????? }??????????? return des;??????? }

public static void main(String[]args) {??????????? TestEncrypt te = new TestEncrypt();??????????? String strSrc = 可以加密漢字 Oh and english ;??????????? System out println( Source String: + strSrc);??????????? System out println( Encrypted String: );??????????? System out println( Use Def: + te Encrypt(strSrc null));??????????? System out println( Use MD : + te Encrypt(strSrc MD ));??????????? System out println( Use SHA: + te Encrypt(strSrc SHA ));??????????? System out println( Use SHA : + te Encrypt(strSrc SHA ));??????? }??? }

另外 在javawebparts中的 RequestHelpers里的generateGUID方法也涉及到了MD 的方法 代碼如下:??? public static String generateGUID(HttpServletRequest request) {

String out = ;??????? try {????????? // Construct a string that is prised of:????????? // Remote IP Address + Host IP Address + Date (yyyyMMdd) +????????? // Time (hhmmssSSa) + Requested Path + Session ID +????????? // HashCode Of ParameterMap????????? StringBuffer *** = new StringBuffer( );????????? *** append(request getRemoteAddr());????????? InetAddress ia = InetAddress getLocalHost();????????? *** append(ia getHostAddress());????????? *** append(new SimpleDateFormat( yyyyMMddhhmmssSSa ) format(new Date()));????????? String path = request getServletPath();????????? String pathInfo = request getPathInfo();????????? if (pathInfo != null) {??????????? path += pathInfo;????????? }????????? *** append(path);????????? *** append(request getSession(false));????????? *** append(request getParameterMap() hashCode());????????? String str = *** toString();????????? // Now encode the string using an MD encryption algorithm ????????? MessageDigest md = MessageDigest getInstance( md );????????? md update(str getBytes());????????? byte[] digest = md digest();????????? StringBuffer hexStr = new StringBuffer( );????????? for (int i = ; i digest length; i++) {??????????? str = Integer toHexString( xFF digest[i]);??????????? if (str length() ) {????????????? str = + str;??????????? }??????????? hexStr append(str);????????? }????????? out = hexStr toString();??????? } catch (NoSuchAlgorithmException nsae) {????????? log error(nsae);??????? } catch (UnknownHostException uhe) {????????? log error(uhe);??????? }??????? // Return the encrypted string It should be unique based on the??????? // ponents that prise the plain text string and should always be??????? // characters thanks to the MD algorithm ??????? return out;

} // End generateGUID()

)私鑰加密

消息摘要只能檢查消息的完整性 但是單向的 對(duì)明文消息并不能加密 要加密明文的消息的話 就要使用其他的算法 要確保機(jī)密性 我們需要使用私鑰密碼術(shù)來(lái)交換私有消息

這種最好理解 使用對(duì)稱(chēng)算法 比如 A用一個(gè)密鑰對(duì)一個(gè)文件加密 而B(niǎo)讀取這個(gè)文件的話 則需要和A一樣的密鑰 雙方共享一個(gè)私鑰(而在web環(huán)境下 私鑰在傳遞時(shí)容易被偵聽(tīng))

使用私鑰加密的話 首先需要一個(gè)密鑰 可用javax crypto KeyGenerator產(chǎn)生一個(gè)密鑰(java security Key) 然后傳遞給一個(gè)加密工具(javax crypto Cipher) 該工具再使用相應(yīng)的算法來(lái)進(jìn)行加密 主要對(duì)稱(chēng)算法有 DES(實(shí)際密鑰只用到 位) AES(支持三種密鑰長(zhǎng)度 位) 通常首先 位 其他的還有DESede等 jdk 種也提供了對(duì)對(duì)稱(chēng)算法的支持 以下例子使用AES算法來(lái)加密

/**??? *PrivateExmaple java??? *Copyright ??? */??? import javax crypto Cipher;??? import javax crypto KeyGenerator;??? import java security Key;

/**??? *私鈅加密 保證消息機(jī)密性??? */??? public class PrivateExample{???  public static void main(String[] args) throws Exception{??? if(args length!= ){???  System err println( Usage:java PrivateExample text );???  System exit( );??? }??? byte[] plainText=args[ ] getBytes( UTF );

//通過(guò)KeyGenerator形成一個(gè)key??? System out println( \nStart generate AES key );??? KeyGenerator keyGen=KeyGenerator getInstance( AES );??? keyGen init( );??? Key key=keyGen generateKey();??? System out println( Finish generating DES key );

//獲得一個(gè)私鈅加密類(lèi)Cipher ECB是加密方式 PKCS Padding是填充方法??? Cipher cipher=Cipher getInstance( AES/ECB/PKCS Padding );??? System out println( \n +cipher getProvider() getInfo());

//使用私鈅加密??? System out println( \nStart encryption: );??? cipher init(Cipher ENCRYPT_MODE key);??? byte[] cipherText=cipher doFinal(plainText);??? System out println( Finish encryption: );??? System out println(new String(cipherText UTF ));

System out println( \nStart decryption: );??? cipher init(Cipher DECRYPT_MODE key);??? byte[] newPlainText=cipher doFinal(cipherText);??? System out println( Finish decryption: );

System out println(new String(newPlainText UTF ));

}??? }

)公鑰加密

上面提到 私鑰加密需要一個(gè)共享的密鑰 那么如何傳遞密鑰呢?web環(huán)境下 直接傳遞的話很容易被偵聽(tīng)到 幸好有了公鑰加密的出現(xiàn) 公鑰加密也叫不對(duì)稱(chēng)加密 不對(duì)稱(chēng)算法使用一對(duì)密鑰對(duì) 一個(gè)公鑰 一個(gè)私鑰 使用公鑰加密的數(shù)據(jù) 只有私鑰能解開(kāi)(可用于加密) 同時(shí) 使用私鑰加密的數(shù)據(jù) 只有公鑰能解開(kāi)(簽名) 但是速度很慢(比私鑰加密慢 到 倍) 公鑰的主要算法有RSA 還包括Blowfish Diffie Helman等 jdk 種提供了對(duì)RSA的支持 是一個(gè)改進(jìn)的地方

/**??? *PublicExample java??? *Copyright ??? */??? import java security Key;??? import javax crypto Cipher;??? import java security KeyPairGenerator;??? import java security KeyPair;??? /**??? *一個(gè)簡(jiǎn)單的公鈅加密例子 Cipher類(lèi)使用KeyPairGenerator生成的公鈅和私鈅??? */??? public class PublicExample{???  public static void main(String[] args) throws Exception{??? if(args length!= ){???  System err println( Usage:java PublicExample text );???  System exit( );??? }

byte[] plainText=args[ ] getBytes( UTF );??? //構(gòu)成一個(gè)RSA密鑰??? System out println( \nStart generating RSA key );??? KeyPairGenerator keyGen=KeyPairGenerator getInstance( RSA );??? keyGen initialize( );??? KeyPair key=keyGen generateKeyPair();??? System out println( Finish generating RSA key );

//獲得一個(gè)RSA的Cipher類(lèi) 使用公鈅加密??? Cipher cipher=Cipher getInstance( RSA/ECB/PKCS Padding );??? System out println( \n +cipher getProvider() getInfo());

System out println( \nStart encryption );??? cipher init(Cipher ENCRYPT_MODE key getPublic());??? byte[] cipherText=cipher doFinal(plainText);??? System out println( Finish encryption: );??? System out println(new String(cipherText UTF ));

lishixinzhi/Article/program/Java/hx/201311/26898

JAVA中 什么是方法簽名

其實(shí)對(duì)于同名不同類(lèi)、同類(lèi)不同名的方法,方法簽名的意義并不是很大,但是對(duì)于重載方法來(lái)說(shuō),方法簽名的意義就十分巨大了。由于重載方法之間的方法名是相同的,那么我們勢(shì)必要從構(gòu)成方法的其他幾個(gè)要素中找到另一個(gè)要素與方法名組成能夠唯一標(biāo)示方法的簽名,方法體當(dāng)然不予考慮。那么就是形參列表和返回值了,但是由于對(duì)于調(diào)用方法的人來(lái)說(shuō),方法的形參數(shù)據(jù)類(lèi)型列表的重要程度要遠(yuǎn)遠(yuǎn)高于返回值,所以方法簽名就由方法名+形參列表構(gòu)成,也就是說(shuō),方法名和形參數(shù)據(jù)類(lèi)型列表可以唯一的確定一個(gè)方法,與方法的返回值一點(diǎn)關(guān)系都沒(méi)有,這是判斷重載重要依據(jù),所以,以下的代碼是不允許的。

public long aaaa(){

}

public int aaaa(){

}

接下來(lái),就來(lái)解釋一下,當(dāng)程序出現(xiàn)NoSuchMethodException時(shí),JVM為我們提供的異常信息究竟是什么意思。首先我們先看幾個(gè)方法以及他們的方法簽名:

public void test1(){} test1()V

public void test2(String str) test2(Ljava/lang/String;)V

public int test3(){} test3()I

從以上三個(gè)例子,我們就可以很簡(jiǎn)單的看出一些小小的規(guī)律:

JVM為我們提供的方法簽名實(shí)際上是由方法名(上文的例子為了簡(jiǎn)單沒(méi)有寫(xiě)出全類(lèi)名)、形參列表、返回值三部分構(gòu)成的,基本形式就是:

全類(lèi)名.方法名(形參數(shù)據(jù)類(lèi)型列表)返回值數(shù)據(jù)類(lèi)型

我們知道了JVM提供的方法簽名的結(jié)構(gòu)之后還是不夠,因?yàn)镴VM是并沒(méi)有特別明確的將數(shù)據(jù)類(lèi)型寫(xiě)出來(lái),而是提供了特殊的表示法,下表就是對(duì)特殊表示字符、字母與對(duì)應(yīng)數(shù)據(jù)類(lèi)型的關(guān)系:

Java方法簽名中特殊字符/字母含義

特殊字符 數(shù)據(jù)類(lèi)型 特殊說(shuō)明

V void 一般用于表示方法的返回值

Z boolean

B byte

C char

S short

I int

J long

F float

D double

[ 數(shù)組 以[開(kāi)頭,配合其他的特殊字符,表示對(duì)應(yīng)數(shù)據(jù)類(lèi)型的數(shù)組,幾個(gè)[表示幾維數(shù)組

L全類(lèi)名; 引用類(lèi)型 以L開(kāi)頭、;結(jié)尾,中間是引用類(lèi)型的全類(lèi)名

分享標(biāo)題:代碼簽名java 代碼簽名證書(shū) 個(gè)人
URL地址:http://m.kartarina.com/article22/hgeejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作搜索引擎優(yōu)化、ChatGPT用戶(hù)體驗(yàn)網(wǎng)站改版、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
主站蜘蛛池模板: 亚洲精品自偷自拍无码| 亚洲av无码一区二区三区天堂古代 | 曰批全过程免费视频在线观看无码| 天堂无码久久综合东京热 | 久久无码精品一区二区三区| 亚洲精品无码久久久久sm| 国产精品久久久久无码av| 国产精品无码国模私拍视频| 精品无码一区在线观看| 精品人妻系列无码人妻免费视频 | 无码成人AAAAA毛片| 无码精品人妻一区二区三区漫画| 蜜芽亚洲av无码一区二区三区| 国产在线拍揄自揄拍无码| 国产成人亚洲精品无码AV大片| 18禁无遮拦无码国产在线播放| 永久免费av无码入口国语片| 亚洲日韩AV无码一区二区三区人| 中文无码制服丝袜人妻av| 伊人蕉久中文字幕无码专区 | 亚洲av无码偷拍在线观看| 永久免费AV无码网站国产| 亚洲伊人成无码综合网| 久久Av无码精品人妻系列| 国产拍拍拍无码视频免费| 亚洲AV无码一区二区三区在线观看| 亚洲AV综合色区无码一二三区 | 13小箩利洗澡无码视频网站免费| 亚洲6080yy久久无码产自国产| 无码人妻精品一区二区三区在线| 不卡无码人妻一区三区音频 | 国产成人无码精品久久久性色| 免费无码又爽又刺激毛片| 亚洲Av无码国产一区二区| 精品高潮呻吟99av无码视频| 人妻丰满熟妇岳AV无码区HD| 日韩午夜福利无码专区a | 无码人妻一区二区三区在线视频| 夜夜添无码试看一区二区三区| 成人无码精品1区2区3区免费看| 国产成人无码一区二区在线观看 |