【Java安全技術探索之路系列:Java可擴充安全架構】之四:JCA(三):JCA編程模型

來源:互聯網
上載者:User

標籤:數位簽章   架構   金鑰組   

郭嘉
郵箱:[email protected]
部落格:http://blog.csdn.net/allenwells
github:https://github.com/AllenWell

一 訊息摘要

使用MD5計算訊息摘要

        try        {            MessageDigest md5 = MessageDigest.getInstance("MD5");            byte[] testdata = { 1, 2, 3, 4, 5 };            md5.update(testdata);            byte[] myhash = md5.digest();        }        catch (NoSuchAlgorithmException e)        {        }

使用SHA-1計算訊息摘要

        try        {            MessageDigest sha = MessageDigest.getInstance("SHA-1");            byte[] testdata = { 1, 2, 3, 4, 5 };            sha.update(testdata);            byte[] myhash = sha.digest();        }        catch (NoSuchAlgorithmException e)        {        }
二 金鑰組的產生

密鑰用介面java.security.Key表示,該介面提供了3種方法:

  • getAlgorithm()返回密鑰演算法;
  • getEncoded()返回以位元組數組形式返回原始編碼格式的密鑰;
  • getFormat()返回密鑰的編碼格式。

DSA演算法和DH演算法產生公私密金鑰對

    try        {            // 1024一bit Digital Signature Algorithm(DSA) key pairs            KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");            keyGen.initialize(1024);            KeyPair keypair = keyGen.genKeyPair();            PrivateKey privateKey = keypair.getPrivate();            PublicKey publicKey = keypair.getPublic();            // 576-bit DiffieHellman key pair            keyGen = KeyPairGenerator.getInstance("DH");            keyGen.initialize(576);            keypair = keyGen.genKeyPair();            privateKey = keypair.getPrivate();            publicKey = keypair.getPublic();        }        catch (java.security.NoSuchAlgorithmException e)        {        }
三 數位簽章的產生

數位簽章技術是使用公開金鑰加密技術產生的,發送方用私密金鑰對訊息簽名,而接收方用公開金鑰對訊息進行解密,從而接收方能驗證訊息的來源或簽名者,從而確保訊息的完整性和真實性。

私密金鑰簽名

            try            {                byte[] testdata = { 1, 2, 3, 4, 5 };                Signature dsig = Signature.getInstance(privateKey                        .getAlgorithm());                dsig.initSign(privateKey);                dsig.update(testdata);                byte[] signedData = dsig.sign();            }            catch (SignatureException e)            {            }            catch (InvalidKeyException e)            {            }            catch (NoSuchAlgorithmException e)            {            }

公開金鑰驗證

            try            {            Signature publicDsig =     Signature.getInstance(publicKey.getAlgorithm());            publicDsig.initVerify(publicKey);            publicDsig.update(signedData);            boolean result = publicDsig.verify(signatureToVerify);            }            catch(SignatureException e)            {            }            catch (InvalidKeyException e)            {            }            catch (NoSuchAlgorithmException e)            {            }

【Java安全技術探索之路系列:Java可擴充安全架構】之四:JCA(三):JCA編程模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.