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

网站服务器怎么更换做花藤字网站

网站服务器怎么更换,做花藤字网站,区网站建设,河北监理工程师考试最新消息Rsa加解密 概述聚合算法名称#xff08;用于创建加密器#xff09;基本概念填充方式分块加密 基本使用生成密钥加解密创建加密器设置模式#xff08;加密#xff09;、公钥对明文加密#xff0c;并对结果进行Base64编码对以上结果#xff0c;进行解密 设置模式#xff0… Rsa加解密 概述聚合算法名称用于创建加密器基本概念填充方式分块加密 基本使用生成密钥加解密创建加密器设置模式加密、公钥对明文加密并对结果进行Base64编码对以上结果进行解密 设置模式解密、私钥 签名 验签创建签名器初始化签名器加载签名明文生成签名初始化验签参数加载签名明文验签 关于初始化加密器和签名器的重载方法 概述 RSA 是一种非对称加密算法它使用一对密钥公钥和私钥。公钥用于加密数据私钥用于解密数据或者私钥用于签名公钥用于验证签名。 聚合算法名称用于创建加密器 JDK官方文档 常用名称 加密算法名 RSA/ECB/NoPaddingRSA/None/NoPaddingRSA/ECB/PKCS1PaddingRSA/ECB/OAEPWithSHA-1AndMGF1PaddingRSA/ECB/OAEPWithSHA-256AndMGF1Padding 签名算法 SHA1withRSA早期使用现不推荐SHA256withRSA满足日常需要一般情况用得最多SHA384withRSA安全性要求更高计算成本随着变高SHA512withRSA安全性要求极高MD5withRSA目前已不推荐使用MD5被证明存在安全漏洞 基本概念 RSA需要一对密钥对通常需要代码或工具生成。 原始密钥数据是字节数组因此如果需要分发或者存储通常也会进行Base64编码。 填充方式 RSA对明文同样有要求明文块不能大于密钥长度。因此通常情况下也需要进行明文填充如果选择无填充那么明文长度如果不是密钥长度倍数那么可能会报错。 PKCS1Padding 这是最常用的填充方式基本满足日常使用OAEPOAEPWithSHA-1AndMGF1Padding 和 OAEPWithSHA-256AndMGF1Padding OAEP 是一种更安全的填充方式主要用于防止选择明文攻击CPA等高级攻击方式。它基于哈希函数和掩码生成函数来构建填充结构。多用于安全要求较高的场景如金融等场景。虽然安全性更高但是计算成本也更高。NoPadding 不进行填充此时对明文有要求长度须是密钥整数倍。 分块加密 RSA算法要求单次加密明文长度不能超出密钥长度如果明文可能超出密钥长度要么使用ECB分块模式加密要么手动分块后逐个块加密。 分块模式ECB按密钥长度分块、NONE不分块 基本使用 生成密钥 支持密钥长度512及以下早期使用现在少用、1024用得较多、2048目前使用最多、3072 位和 4096 位对安全要求极高的场景但会增加计算成本 生成密钥对象 KeyPairGenerator pairGenerator KeyPairGenerator.getInstance(RSA); pairGenerator.initialize(2048); KeyPair keyPair pairGenerator.genKeyPair();解析出公私钥可以从密钥对象中获取公私钥 // 私钥 PrivateKey privateKey keyPair.getPrivate(); // 公钥 PublicKey publicKey keyPair.getPublic();此时的公私钥是以字节数组存在如果要进行存储和分发。通常使用Base64编码 // 私钥字符串 String privateEncode Base64.getEncoder().encodeToString(privateKey.getEncoded());// 公钥字符串 String publicEncode Base64.getEncoder().encodeToString(publicKey.getEncoded())加解密 创建加密器 Cipher cipher Cipher.getInstance(RSA/ECB/PKCS1Padding);设置模式加密、公钥 cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());对明文加密并对结果进行Base64编码 byte[] bytes cipher.doFinal(str.getBytes(StandardCharsets.UTF_8));System.out.println(加密后的内容 Base64.getEncoder().encodeToString(bytes));对以上结果进行解密 设置模式解密、私钥 cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate()); byte[] bytes1 cipher.doFinal(bytes); System.out.println(解密后的内容 new String(bytes1));签名 验签 我们通常说的RSA签名实际上是一种简略的说法。 RSA签名实际是签名 加密 2个过程。 其中散列算法或者叫摘要算法签名算法等等常用的有 SHA256大部分场景使用平衡安全和性能SHA384SHA512MD5MD5被证明存在漏洞不推荐使用SHA1早期使用目前已不推荐使用 这些散列算法是独立于RSA的RSA签名算法名称就是在它们后面增加 withRSA 而已。 所谓RSA签名只是对散列算法得到的散列值进行RSA加密而已。这一点要明确。 接着上面创建RSA密钥后开始进行签名与验签 创建签名器 与加解密不同签名器由Signature这个类提供支持 Signature signature Signature.getInstance(SHA256withRSA);初始化签名器加载签名明文 signature.initSign(keyPair.getPrivate()); signature.update(str.getBytes(StandardCharsets.UTF_8));生成签名 byte[] byteSign signature.sign(); System.out.println(签名 Base64.getEncoder().encodeToString(byteSign));初始化验签参数加载签名明文 signature.initVerify(keyPair.getPublic()); signature.update(str.getBytes(StandardCharsets.UTF_8));验签 boolean verify signature.verify(byteSign); System.out.println(验签结果 verify);关于初始化加密器和签名器的重载方法 在RSA加密场景除了模式公钥外还有个参数SecureRandom random它用于在一些填充模式OAEP下生成一个随机掩码提高加密安全性。
http://www.hkea.cn/news/14495800/

相关文章:

  • 校园网站做自己的广告网站关键词多少个好
  • 网站建设推广好做吗南京自适应网站
  • 做弹幕网站如何建设网站简介
  • 网站选项卡代码免费软件的定义
  • 东莞网站建设制作英语培训学校网站怎么做
  • 国家森林公园网站建设小程序商店官网
  • 福田网站 建设seo信科wordpress建站模版
  • 网站建设勹金手指下拉建个公司网站需要多少钱
  • 少数民族网站建设不知名网站开发
  • 做评测好的视频网站网站提交 入口
  • 网站建设视频百度云做外汇网站卖判刑多少年
  • 手表哪个网站正品电话怎么做网站域名
  • 企业应该如何建设网站汉中网络推广
  • 申请自己的网站空间asp.net企业网站设计
  • 商城网站制作 价格杭州响应式网站制作
  • 番禺网站建设服务哪里建设网站不需要备案
  • 怎么制作个人网站合肥设计网站公司
  • 重庆网站推广流程阿里云服务器责任怎么做网站
  • c 网站开发的好处在线制作简历的网站
  • 旅游网站流程图中山软件开发
  • 做网站翻页怎么做财税公司怎么找客源
  • 公路水运建设质量与安全监督系统网站站长工具
  • 济南建站方案长沙网站建设做得好的
  • 电商网站设计案例信息门户登录入口
  • 做网站分几个步骤个人博客网站开发历程
  • 四合一网站静态页面加wordpress
  • 沧州免费建站html的网站案例
  • 网站推广怎么写太原网站建设公司怎么样
  • 石家庄品牌网站建设深圳做网站个人
  • 企业网站排版规则深圳工程招标信息网