当前位置: 首页 > news >正文

米枫网站怎么做分页建设银行重大新闻

米枫网站怎么做分页,建设银行重大新闻,怎么介绍自己的网站建设,江北网站制作目录 1.说明 2.加密和加签的区别 3.示例 4.注意事项 1.说明 RSA算法是一种非对称加密算法#xff0c;与对称加密算法不同的是,RSA算法有两个不同的密钥,一个是公钥,一个是私钥。 公钥是公开的#xff0c;可以多人持有#xff1b;私钥是保密的#xff0c;只有自己持有。…目录 1.说明 2.加密和加签的区别 3.示例 4.注意事项 1.说明 RSA算法是一种非对称加密算法与对称加密算法不同的是,RSA算法有两个不同的密钥,一个是公钥,一个是私钥。 公钥是公开的可以多人持有私钥是保密的只有自己持有。 加密常用的密钥长度有1024,204830724096。密钥长度越长加密的强度也就越强性能也会越低。可以使用1024或2048位的密码。 2.加密和加签的区别 ①加密是防止信息泄露确保数据传输的安全如前端输入的一些账号密码卡号等敏感信息必须加密后传输。 加签是防止信息被篡改确保是发送方传递的数据。 ②通过公钥进行加密传输然后接收方使用私钥进行解密。 通过私钥进行加签然后接收方使用公钥进行验签。 ③加密是可逆的也就是说加密后的密文可以进行解密。 加签是不可逆的只能通过验签来验明真伪。 ④加密是明文长度是有限制的明文的最大长度密文长度-11单位是字节当设置密钥为1024位时1024/8-11117字节所以明文的最大长度为117个字节解密的最大长度为127个字节相差11个字节是因为加密时使用了填充模式。 加签是没有长度限制的。 3.示例 ①引入依赖 dependencygroupIdcommons-codec/groupIdartifactIdcommons-codec/artifactIdversion1.14/version/dependency ②工具类 package com.example.utils;import java.io.ByteArrayOutputStream; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import javax.crypto.Cipher;import org.apache.commons.codec.binary.Base64;/*** Author linaibo* Date 2024/2/17 16:26* Version 1.0*/ public class RsaTool {/*** 16 * RSA最大加密明文大小* 17*/private static final int MAX_ENCRYPT_BLOCK 117;/*** 21 * RSA最大解密密文大小* 22*/private static final int MAX_DECRYPT_BLOCK 128;/*** 26 * 获取密钥对* 27 ** 28 * return 密钥对* 29*/public static KeyPair getKeyPair() throws Exception {KeyPairGenerator generator KeyPairGenerator.getInstance(RSA);generator.initialize(1024);return generator.generateKeyPair();}/*** 37 * 获取私钥* 38 ** 39 * param privateKey 私钥字符串* 40 * return* 41*/public static PrivateKey getPrivateKey(String privateKey) throws Exception {KeyFactory keyFactory KeyFactory.getInstance(RSA);byte[] decodedKey Base64.decodeBase64(privateKey.getBytes());PKCS8EncodedKeySpec keySpec new PKCS8EncodedKeySpec(decodedKey);return keyFactory.generatePrivate(keySpec);}/*** 50 * 获取公钥* 51 ** 52 * param publicKey 公钥字符串* 53 * return* 54*/public static PublicKey getPublicKey(String publicKey) throws Exception {KeyFactory keyFactory KeyFactory.getInstance(RSA);byte[] decodedKey Base64.decodeBase64(publicKey.getBytes());X509EncodedKeySpec keySpec new X509EncodedKeySpec(decodedKey);return keyFactory.generatePublic(keySpec);}/*** 63 * RSA加密* 64 ** 65 * param data 待加密数据* 66 * param publicKey 公钥* 67 * return* 68*/public static String encrypt(String data, PublicKey publicKey) throws Exception {Cipher cipher Cipher.getInstance(RSA);cipher.init(Cipher.ENCRYPT_MODE, publicKey);int inputLen data.getBytes().length;ByteArrayOutputStream out new ByteArrayOutputStream();int offset 0;byte[] cache;int i 0;// 对数据分段加密while (inputLen - offset 0) {if (inputLen - offset MAX_ENCRYPT_BLOCK) {cache cipher.doFinal(data.getBytes(), offset, MAX_ENCRYPT_BLOCK);} else {cache cipher.doFinal(data.getBytes(), offset, inputLen - offset);}out.write(cache, 0, cache.length);i;offset i * MAX_ENCRYPT_BLOCK;}byte[] encryptedData out.toByteArray();out.close();// 获取加密内容使用base64进行编码,并以UTF-8为标准转化成字符串// 加密后的字符串return new String(Base64.encodeBase64String(encryptedData));}/*** 96 * RSA解密* 97 ** 98 * param data 待解密数据* 99 * param privateKey 私钥* 100 * return* 101*/public static String decrypt(String data, PrivateKey privateKey) throws Exception {Cipher cipher Cipher.getInstance(RSA);cipher.init(Cipher.DECRYPT_MODE, privateKey);byte[] dataBytes Base64.decodeBase64(data);int inputLen dataBytes.length;ByteArrayOutputStream out new ByteArrayOutputStream();int offset 0;byte[] cache;int i 0;// 对数据分段解密while (inputLen - offset 0) {if (inputLen - offset MAX_DECRYPT_BLOCK) {cache cipher.doFinal(dataBytes, offset, MAX_DECRYPT_BLOCK);} else {cache cipher.doFinal(dataBytes, offset, inputLen - offset);}out.write(cache, 0, cache.length);i;offset i * MAX_DECRYPT_BLOCK;}byte[] decryptedData out.toByteArray();out.close();// 解密后的内容return new String(decryptedData, UTF-8);}/*** 129 * 签名* 130 ** 131 * param data 待签名数据* 132 * param privateKey 私钥* 133 * return 签名* 134*/public static String sign(String data, PrivateKey privateKey) throws Exception {byte[] keyBytes privateKey.getEncoded();PKCS8EncodedKeySpec keySpec new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory KeyFactory.getInstance(RSA);PrivateKey key keyFactory.generatePrivate(keySpec);// 不同的签名算法// Signature signature Signature.getInstance(MD5withRSA);// Signature signature Signature.getInstance(MD2withRSA);// Signature signature Signature.getInstance(SHA1withRSA);// Signature signature Signature.getInstance(SHA224withRSA);// Signature signature Signature.getInstance(SHA256withRSA);// Signature signature Signature.getInstance(SHA384withRSA);Signature signature Signature.getInstance(SHA512withRSA);signature.initSign(key);signature.update(data.getBytes());return new String(Base64.encodeBase64(signature.sign()));}/*** 147 * 验签* 148 ** 149 * param srcData 原始字符串* 150 * param publicKey 公钥* 151 * param sign 签名* 152 * return 是否验签通过* 153*/public static boolean verify(String srcData, PublicKey publicKey, String sign) throws Exception {byte[] keyBytes publicKey.getEncoded();X509EncodedKeySpec keySpec new X509EncodedKeySpec(keyBytes);KeyFactory keyFactory KeyFactory.getInstance(RSA);PublicKey key keyFactory.generatePublic(keySpec);// 不同的签名算法// Signature signature Signature.getInstance(MD5withRSA);// Signature signature Signature.getInstance(MD2withRSA);// Signature signature Signature.getInstance(SHA1withRSA);// Signature signature Signature.getInstance(SHA224withRSA);// Signature signature Signature.getInstance(SHA256withRSA);// Signature signature Signature.getInstance(SHA384withRSA);Signature signature Signature.getInstance(SHA512withRSA);signature.initVerify(key);signature.update(srcData.getBytes());return signature.verify(Base64.decodeBase64(sign.getBytes()));} }③使用 package com.example.utils;import java.security.KeyPair; import org.apache.commons.codec.binary.Base64;/*** Author linaibo* Date 2024/2/17 16:30* Version 1.0*/ public class TestRsa {public static void main(String[] args) throws Exception {KeyPair keyPair RsaTool.getKeyPair();String privateKey new String(Base64.encodeBase64(keyPair.getPrivate().getEncoded()));String publicKey new String(Base64.encodeBase64(keyPair.getPublic().getEncoded()));System.out.println(公钥 publicKey);System.out.println(私钥 privateKey);String data 需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字;String encrypt RsaTool.encrypt(data, RsaTool.getPublicKey(publicKey));System.out.println(加密后 encrypt);String decrypt RsaTool.decrypt(encrypt, RsaTool.getPrivateKey(privateKey));System.out.println(解密后 decrypt);String sign RsaTool.sign(data, RsaTool.getPrivateKey(privateKey));System.out.println(签名后 sign);boolean verify RsaTool.verify(data, RsaTool.getPublicKey(publicKey), sign);System.out.println(验签结果 verify);} }结果 公钥MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD5Wawf44UliJLXLQ0UUTZXaH1EZv1bHM4nNSV2xVQY2RN8dKLgQ1J71y90vJjusi0rOqfFdni2UU3VtnMdtYOYXbhsV14oFtU3gWYK28KlqOd5rtjjNR2Vv0sPDaZLfdsq6p5BpNjtWApPM9ghXj0S6BM3GWjsftNPM/IwIDAQAB 私钥MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAPlZr7B/jhSWIktctDRRRNldofURm/Vsczic1JXbFVBjZE3x0ouBDUnvXL73S8mO6yLSs6p8V2eLZRTdW2cx21g5hduGxXXigW1T7f6BZgrbwqWo53mu2OM1HZW/Sw8Npn4t92yrr6nkGk2O1YCk8z2CFePRLoEzcZaOx008z8jAgMBAAECgYB0hwA6G1am4rtUyZ36J7XQhWk9JTAzezOwSPr4FWGmtxOPLubLDUsnyrlp6YITL0AKh2Ch9dE8XTMmmHTyQ3qsdjn5gXhxf2WBSNGKdpp9kO/x6NgfcsT71e9luHfhA2eviN9EQWXriOLRECPmvGGwcvRrMJhS3lz/xyFaSUvkQJBAP4hO35zbkF9rTXfX/01RsUlyPBMmBwcpLft6oxjMq2hRmO7GCEpX8qaEdG3ODKDildzbXUjN76cynL61jYlXkCQQD7L3MY2OgPOGSgRhwUKceaBXQVnl2Y5BEhq5HERFRBWfWiJUzsEHoY30SGfvw6jsegM9Crd6faEzaHBMyyV57AkEAhkt3ji5f4JoSk7qUllG2MW7zThGb/JcicNR4s3GkkV79vKxdZwDfT0i2C/Zf60naLLah7FoNFl0M2ZyapVvnOQJBALFcSbpKC6rTMOzlzec3aqSyHIxUZkJESmJTN1HBlZMDziIcKj7hoTra5i9i9YPAaJkotH45gj4OjN1sxHWkCQCT6vx4dt5t92nIwO0Hfwh6wY3qDz66Aq7S3iAda04PqkECh0J30gzEcs2G8l8vkpihnAQtCtRANhkzqfDNu8 加密后8LbPWfiOb2iSah4Roq58mVLujvELI6BhLvOfm/jRCfMhuoEDWzfVpI9RFnPmIr43wQwDtFqCLAIDHpMggI21F4e59fj2/XTviUrUdxb/11qkhw9ovELyhOSh85PNvhSvF7nnn1kytAdT54chKtxgGhd6ZzFs7LZx1qoyGA/ypC9Bl5ZiT4ZECNOR6ZlOK8v5aVfiwZUz9iKso5COF0DFf4rlBSKoteH2muhJWkNCSxLqjOjieCTrWaFqERSFKtnRoCqCAnNXpYn3gSZDilp6n3UhHsW8MPQ0rnUYY0D4JepBXIk6VrDXfRiPKrw4wCVXTDYSsL6RoZ36WUW5Azf3sCKr1PRe5Gw1CtpoAYavKqxr0QD7ShheWxBX1Jbb3uXwr/FOxlJ9GlrTr6ZBhHomz2jEV7pgmBfMvsg7g6hAfinSUk6tM60gw3zJT6Bq0M29MNtI04Cbj0i5aXCPpTKyT1wvVWoZrCvfjPIimQ9RmqmhBAS1/qvETS6K5c 解密后需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字需要加密的文字 签名后FgpCHgRZg0AoR747wvDDBbPhYeVUCEJfRaJ3tGVJY3QplddTxprtMHYFQalLK3vVP5Dpo/6bMAzQyu8Y4oaArqtYpoURhPnvr4QXTHfR8MG8PGYc1S11ysAuDPbsb6geAvHRFsspjGJ9oLH2nHBnZzMQ62HGZRzAKING219SY 验签结果true 4.注意事项 ①因为加密的明文长度限制所以需要分段进行加密。 ②公钥加密私钥解密私钥加签公钥验签 ③RSA的数字签名算法主要有以下两种 MD系列 。主要包括MD2withRSA和MD5withRSA。SHA系列 。主要包括SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA、SHA512withRSA。 数字签名算法具有安全性、抗否认性的特点它是一种带有密钥公钥、私钥的消息摘要算法用于验证数据完整性、认证数据来源、抗否认等。 ④加签和验签使用的数字签名算法要一致。 参照 RSA加密、解密、签名、验签的原理及方法_rsa解密-CSDN博客 数字签名算法MD5withRSA-CSDN博客
http://www.zqtcl.cn/news/9693/

相关文章:

  • 厦门做网站公司排名国外最具创意的wordpress博客
  • iis7配置thinkphp网站10m光纤做网站
  • 个人网站也需要备案吗广东省工程招投标信息网
  • 网站必须做可信认证石家庄哪里能做门户网站的
  • 国外网站做家具哪个好8g流量网站
  • 搬瓦工vps建设网站阿里巴巴注册网站首页
  • 公司网站的维护wordpress表单信息在哪里
  • 公司注销预审在什么网站做做网站哪家公司便宜
  • 网站编辑工具软件网站做外链的具体步骤
  • 网站开发入门ppt手机网站jq导航菜单
  • 手把手教你建网站如何销售自己产品方法有哪些
  • 成都定制网站设网站建设流程有几个阶段
  • 云虚拟主机怎么建设网站1688淘宝货源一件代发
  • 如何做网站支付链接微信公众号登录平台登录官网
  • 企业网站建设与维护怎么注册自己的app
  • 网站优化优化怎么做文件什么上传到wordpress
  • 外网搭建为什么seo工资不高
  • 凤岗东莞微信网站建设注册有限公司需要什么资料
  • 网站建设 自学网站开发实现软硬件环境
  • 网站为什么会被挂马最常用最齐全wordpress插件大全
  • 福建工程建设中心网站30天网站建设 视频
  • 沉默是金网站seo搜索引擎优化案例
  • 个人免费展示网站中国执行信息公开网官网
  • 广州地址设计网站php网站开发技术题目
  • qq上如何做文学网站网站开发社区
  • 深圳网站备案注销西安月子中心网站制作
  • 网站建设对企业带来什么作用广州学习网站建设
  • 西安网站建设雄账号重庆网领网站建设公司
  • 东莞网站推广排名centos装wordpress
  • 网站建设宣传语怎么写网站开发简历 自我评价