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

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

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

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、東平網(wǎng)絡(luò)推廣、小程序制作、東平網(wǎng)絡(luò)營(yíng)銷、東平企業(yè)策劃、東平品牌公關(guān)、搜索引擎seo、人物專訪、企業(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)址:muchs.cn

如何從java生成簽名在AWS問題,怎么解決

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

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

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

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

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

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

在代碼的接收端:

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

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

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

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

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

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

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

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

(3)數(shù)字簽名:1個(gè)證書被1個(gè)分發(fā)者的實(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í)例入手解決問題(本文僅是作為簡(jiǎn)單介紹)

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

)消息摘要

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

Java代碼

/***MessageDigestExample java*Copyright */import java security MessageDigest;/***單一的消息摘要算法 不使用密碼 可以用來對(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( 算法 )來獲得消息摘要 這里使用SHA 的 位算法MessageDigest messageDigest=MessageDigest getInstance( SHA );System out println( +messageDigest getProvider() getInfo());//開始使用算法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í)例入手解決問題(本文僅是作為簡(jiǎn)單介紹)

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

)消息摘要

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

/**??? *MessageDigestExample java??? *Copyright ??? */??? import java security MessageDigest;??? /**??? *單一的消息摘要算法 不使用密碼 可以用來對(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( 算法 )來獲得消息摘要 這里使用SHA 的 位算法??? MessageDigest messageDigest=MessageDigest getInstance( SHA );

System out println( \n +messageDigest getProvider() getInfo());??? //開始使用算法??? messageDigest update(plainText);??? System out println( \nDigest: );??? //輸出算法運(yùn)算結(jié)果??? System out println(new String(messageDigest digest() UTF ));???  }??? }??? 還可以通過消息認(rèn)證碼來進(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ù)來交換私有消息

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

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

/**??? *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 );

//通過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è)私鈅加密類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)境下 直接傳遞的話很容易被偵聽到 幸好有了公鑰加密的出現(xiàn) 公鑰加密也叫不對(duì)稱加密 不對(duì)稱算法使用一對(duì)密鑰對(duì) 一個(gè)公鑰 一個(gè)私鑰 使用公鑰加密的數(shù)據(jù) 只有私鑰能解開(可用于加密) 同時(shí) 使用私鑰加密的數(shù)據(jù) 只有公鑰能解開(簽名) 但是速度很慢(比私鑰加密慢 到 倍) 公鑰的主要算法有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類使用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類 使用公鈅加密??? 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ì)于同名不同類、同類不同名的方法,方法簽名的意義并不是很大,但是對(duì)于重載方法來說,方法簽名的意義就十分巨大了。由于重載方法之間的方法名是相同的,那么我們勢(shì)必要從構(gòu)成方法的其他幾個(gè)要素中找到另一個(gè)要素與方法名組成能夠唯一標(biāo)示方法的簽名,方法體當(dāng)然不予考慮。那么就是形參列表和返回值了,但是由于對(duì)于調(diào)用方法的人來說,方法的形參數(shù)據(jù)類型列表的重要程度要遠(yuǎn)遠(yuǎn)高于返回值,所以方法簽名就由方法名+形參列表構(gòu)成,也就是說,方法名和形參數(shù)據(jù)類型列表可以唯一的確定一個(gè)方法,與方法的返回值一點(diǎn)關(guān)系都沒有,這是判斷重載重要依據(jù),所以,以下的代碼是不允許的。

public long aaaa(){

}

public int aaaa(){

}

接下來,就來解釋一下,當(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)單沒有寫出全類名)、形參列表、返回值三部分構(gòu)成的,基本形式就是:

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

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

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

特殊字符 數(shù)據(jù)類型 特殊說明

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

Z boolean

B byte

C char

S short

I int

J long

F float

D double

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

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

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

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

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(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í)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)