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

软文新闻发布网站如何建设网址导航网站

软文新闻发布网站,如何建设网址导航网站,100个无水印短视频素材,设计软件的软件目录 常用加密算法对比 Base64 编解码 MessageDigest 信息摘要 MD5 信息摘要算法 原生 AES、DES、RSA 加解密 国密算法加密、解密#xff1a;SM2、SM3、SM4 常用加密算法对比 常用加密算法对比 加密算法描述SHA 安全散列算法。单向加密、数据不可逆(即不可恢复)。长度是…目录 常用加密算法对比 Base64 编解码 MessageDigest 信息摘要 MD5 信息摘要算法 原生 AES、DES、RSA 加解密 国密算法加密、解密SM2、SM3、SM4 常用加密算法对比 常用加密算法对比 加密算法描述SHA 安全散列算法。单向加密、数据不可逆(即不可恢复)。长度是固定的。BASE64 1、BASE64 有自己的编码表可编码也可解码解码后能得到源内容。 2、BASE64 编码的长度是不固定的随着源字符串的增加而增加。 3、在某些不方便使用中文的地方可以通过 BASE64 编码成可见字符需要中文时再解码回来即可比如 url 地址或者 Cookie. MD5 信息摘要是安全的单向哈希函数对大小的信息输出固定长度的哈希值单向加密、数据不可逆。 摘要好比指纹每个人都是唯一的相同的源数据摘要也一样不同的数据摘要则不一样。摘要只是源数据的局部所以想要解码回去恢复整个源数据是不行的因为是不完整的。 DES Data Encrytion Standard数据加密标准) , 特点1. 对称加密  2. 同一个 SECRET_KEY密钥 AES Advanced Encrytion Standard高级加密标准特点1. 对称加密  2. 一个 SECRET_KEY密钥扩展成多个子 SK轮加密 RSA 1. 非对称加密即PKPUBLIC_KEY 公钥 与 SK SECRET_KEY 密钥 不是同一个 2. PK 加密时必须用 SK 解密、反之  SK 加密时必须用 PK 解密 3. PK 决定 SK但是 PK 很难算出 SK数学原理两个大质数相乘积很难因式分解 4. 速度慢适合对少量数据加密 SM2国密算法非对称算法需要公钥和私钥用来替换 RSASM3国密算法摘要/杂凑算法用来替换MD5、SHA-1、SHA-2SM4国密算法对称算法分组密码算法用于替代DES/AES等国际算法 Base64 编解码 1、BASE64 有自己的编码表可编码也可解码解码后能得到源内容。 2、BASE64 编码的长度是不固定的随着源字符串的增加而增加。 3、比如登陆的密码单纯只用 BASE64 编码的话是可以再解密复原的但是用了 MD5 摘要之后则不能再复原了。 4、在某些不方便使用中文的地方可以通过 BASE64 编码成可见字符需要中文时再解码回来即可如 Cookie 中是不能存储中文的。 5、BASE64Encoder 用于编码、BASE64Decoder 用于解码都位于 sun.misc 包下。 6、Base64 编码要求把3个8位字节3*824转化为4个6位的字节4*624之后在6位的前面补两个0形成8位一个字节的形式。 如果剩下的字符不足3个字节则用0填充输出字符使用因此编码后输出的文本末尾可能会出现1或2个。为了保证所输出的编码为可读字符Base64制定了一个编码表以便进行统一转换。编码表的大小为2^664这也是Base64名称的由来。 码值字符码值字符码值字符码值字符0A16Q32g48w1B17R33h49x2C18S34i50y3D19T35j51z4E20U36k5205F21V37i5316G22W38m5427H23X39n5538I24Y40o5649J25Z41p57510K26a42q58611L27b43r59712M28c44s60813N29d45t61914O30e46u6215P31f47v63/ /*** BASE64 编码* BASE64 有自己的编码表可编码同时可解解码长度是不固定的随着源字符串的增加而增加* 1、比如登陆的密码单纯只有 BASE64 转码的话是可以再解密的但是用了 MD5 摘要之后则不能再返回了* 2、在某些不方便使用中文的地方可以通过 BASE64 转码成可见字符需要中文时再解码回来即可如 Cookie 中是不能存储中文的** param message 待编码的源数据* return BASE64 编码后的字符串.*/public static String base64Encode(String message) {String result ;try {if (message null || .equals(message.trim())) {return result;}result base64Encode(message.getBytes(UTF-8));} catch (UnsupportedEncodingException e) {e.printStackTrace();}return result;}/*** BASE64Encoder 编码重载方法.** param message* return*/public static String base64Encode(byte[] message) {String result ;if (message null || message.length 0) {return result;}/** BASE64Encoder 用于编码、BASE64Decoder 用于解码*/BASE64Encoder base64Encoder new BASE64Encoder();result base64Encoder.encode(message);return result;}/*** BASE64 解码* 1、BASE64 有自己的编码表可编码同时可解密长度是不固定的随着源字符串的增加而增加* 2、比如登陆的密码单纯只有 BASE64 的转码的话是可以再解密返回的但是用了 MD5 摘要之后则不能再返回了* 3、在不方便使用中文的地方可以通过 BASE64 转码成可见字符需要中文时再解码回来即可如 Cookie 中是不能存储中文的** param message 待解码的字符串如果为空则返回空字符串.* return*/public static String base64Decode(String message) {String result ;try {if (message null || .equals(message.trim())) {return result;}/** BASE64Encoder 用于编码、BASE64Decoder 用于解码*/BASE64Decoder base64Decoder new BASE64Decoder();byte[] decoderByte base64Decoder.decodeBuffer(message);result new String(decoderByte, UTF-8);} catch (IOException e) {e.printStackTrace();}return result;}public static void main(String[] args) {String sourceMessage 123456万里长城_*$#.Nice;String encodeMsg base64Encode(sourceMessage);String decodeMsg base64Decode(encodeMsg);System.out.println(原字符 sourceMessage);//原字符123456万里长城_*$#.NiceSystem.out.println(base64 编码后 encodeMsg);//base64 编码后MTIzNDU25LiH6YeM6ZW/5ZOXyYqJCMuTmljZQSystem.out.println(base64 解码后 decodeMsg);//base64 解码后(可以解码)123456万里长城_*$#.Nice}src/main/java/com/wmx/thymeleafapp/utils/Base64Utils.java · 汪少棠/thymeleafapp - Gitee.com MessageDigest 信息摘要 1、java.security.MessageDigest 类为应用程序提供信息摘要算法如 SHA-1、SHA-256、MD5。 2、信息摘要是安全的单向哈希函数其信息大小是任意的且输出为固定长度的哈希值所以通常会结合 BAse64 编码一起使用将哈希值转换为可视字符。如果直接使用 new String(byte[] bytes) 是会乱码的 3、摘要好比指纹每个人都是唯一的相同的源数据摘要也一样不同的数据摘要则不一样。摘要只是源数据的局部所以想要解码回去恢复整个源数据是不行的因为是不完整的。 java.security.MessageDigest 常用方法 方法描述MessageDigest getInstance(String algorithm)返回实现指定摘要算法的 MessageDigest 对象。如 SHA-1、SHA-256、MD5update(byte[] input)使用指定的字节数组更新摘要。byte[] digest()通过执行最后的操作如填充来完成哈希计算进行此调用后将重置摘要。byte[] digest(byte[] input)使用指定的字节数组对摘要执行最终更新然后完成摘要计算。相当于先调用 update(byte[] input)然后调用 digest()。boolean isEqual(byte[] digesta, byte[] digestb)比较两个摘要是否相等。进行简单的字节比较。如果摘要相等则返回true否则返回false。reset()重置摘要以供进一步使用。String getAlgorithm()返回算法名称int getDigestLength()返回摘要的长度字节就是 digest() 方法返回的字节数组的长度. /*** 将任意字符通过 MD5 摘要 与 Base64 进行定长加密** param message 待加密字符* param algorithm 信息生成摘要的算法默认为 md5可选值有 SHA-1、SHA-256、MD5* return 加密后字符*/public static String digestEncryption(String message, String algorithm) {String result ;try {algorithm algorithm null ? MD5 : algorithm;//指定信息摘要算法提取摘要的哈希值. 哈希值字节数组如果直接 new String(md5Byte) 是会乱码的MessageDigest messageDigest MessageDigest.getInstance(algorithm);byte[] md5Byte messageDigest.digest(message.getBytes());//使用 BASE64 进行定长编码BASE64Encoder base64Encoder new BASE64Encoder();result base64Encoder.encode(md5Byte);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return result;}public static void main(String[] args) {String sourceMessage 123456万里长城_*$#.Nice;System.out.println(原字符 sourceMessage);//原字符123456万里长城_*$#.NiceString md5Msg digestEncryption(sourceMessage, md5);String sha1Msg digestEncryption(sourceMessage, SHA-1);String sha256Msg digestEncryption(sourceMessage, SHA-256);//md5 base64 加密后rIJQEL19boeV5p7qPLlDgSystem.out.println(md5 base64 加密后 md5Msg);//md5 base64 加密后UYg5qBdsuCdloFP0CVPasziIEUSystem.out.println(SHA-1 base64 加密后 sha1Msg);//md5 base64 加密后dqTa6BTTvZ4zLF5WNAH5Cv660RxYMEIJlBRIGKdNXmMSystem.out.println(SHA-256 base64 加密后 sha256Msg);} src/main/java/com/wmx/thymeleafapp/utils/Md5EncodeUtils.java · 汪少棠/thymeleafapp - Gitee.com 4、除了上面使用 BASE64 将生成的摘要字节数组转换成可视字符串外也可以使用将10进制字节数组转成 16 进制字符串的方式16 进制转换在线源码main/java/com/wmx/thymeleafapp/utils/DataTypeConvertUtils.java MD5 信息摘要算法 1、压缩性任意长度的数据计算出来的 MD5 值都是固定的 2、容易计算: 从原数据计算出 MD5 值是非常方便的 3、抗修改性: 对原数据做任何改动哪怕之修改1个字节MD5 值都有很大区别 4、强抗碰撞: 已知原数据和其 MD5 值想找到一个具有相同 MD5 值的数据伪造数据是非常困难的。 5、应用场景文件一致性较验、数据签名、安全访问认证 等。 6、使用实例代码参考上面的 MessageDigest 信息摘要下面演示对文件提取摘要 Md5、SHA-1、SHA-256 摘要算法使用都是同理都是通过 MessageDigest.getInstance(String algorithm) 指定. /*** 对文件提取摘要** param file 待提取摘要的文件* param algorithm 生成摘要的算法默认为 md5可选值有 SHA-1、SHA-256、MD5* return*/public static String md5DigestByFile(File file, String algorithm) {String result ;try {algorithm algorithm null ? MD5 : algorithm;//构建文件输入流然后获取文件通道。FileInputStream fileInputStream new FileInputStream(file);//FileChannel 用于读取写入映射和操作文件的通道。FileChannel fileChannel fileInputStream.getChannel();/*** map(MapMode mode,long position, long size)将此频道文件的区域直接映射到内存中。* position - 映射区域要启动的文件中的位置; 必须是非负的* size - 要映射的区域的大小; 必须是非负数不得大于Integer.MAX_VALUE*/MappedByteBuffer byteBuffer fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, file.length());//指定信息摘要算法提取摘要的哈希值. 哈希值字节数组如果直接 new String(md5Byte) 是会乱码的MessageDigest messageDigest MessageDigest.getInstance(algorithm);//使用指定的 ByteBuffer 更新摘要.messageDigest.update(byteBuffer);//提取摘要然后将十进制的字节数组转成 16 进制可视字符串.//通常在网上下载的资源对方提供对照的 md5 码或者 sha 码也是使用 16 进制转换的.result bytes2HexString(messageDigest.digest(), false);fileInputStream.close();} catch (Exception e) {e.printStackTrace();}return result;}/*** 10 进制字节数组转 16 进制字符串因为16进制中含有A-F所以只能用字符串表示* 对应上面的 hexString2Bytes 方法** param b :待转换的10进制字节数组如 new byte[]{69, 83, 67, 47, 86, 80, 46, 110, 101, 116, 16, 3, 0, 0, 0, 0};* param isHaveBlank 转换的结果是否用空格隔开true 时如 45 5A 43 2F 56 00false 时如 455A432F5600* return 转换好的 16进制字符串如 45 53 43 2F 56 50 2E 6E 65 74 10 03 00 00 00 00 */private static String bytes2HexString(byte[] b, boolean isHaveBlank) {if (b null || b.length 0) {System.out.println(bytes2HexString 参数错误放弃转换.);return null;}StringBuffer result new StringBuffer();String hex;for (int i 0; i b.length; i) {hex Integer.toHexString(b[i] 0xFF);if (hex.length() 1) {hex 0 hex;}if (isHaveBlank) {result.append(hex.toUpperCase() );} else {result.append(hex.toUpperCase());}}return result.toString();}public static void main(String[] args) {new Md5EncodeUtils().test2();}public void test2() {File file new File(C:\\Users\\Think\\Downloads\\commons-io-2.6-bin.tar.gz);String fileMd5Digest md5DigestByFile(file, SHA-256);System.out.println(fileMd5Digest: fileMd5Digest.toLowerCase());} src/main/java/com/wmx/thymeleafapp/utils/Md5EncodeUtils.java · 汪少棠/thymeleafapp - Gitee.com 验证很简单随便去 Apache 上下载一个资源比如Commons IO – Download Apache Commons IO 然后使用代码对它进行提取摘要最后和 apache 提供的进行对比即可。 原生 AES、DES、RSA 加解密 src/main/java/com/wmx/thymeleafapp/utils/AesUtil.java · 汪少棠/thymeleafapp - Gitee.com。 src/main/java/com/wmx/thymeleafapp/utils/DesUtil.java · 汪少棠/thymeleafapp - Gitee.com。 src/main/java/com/wmx/thymeleafapp/utils/ReaUtil.java · 汪少棠/thymeleafapp - Gitee.com。 国密算法加密、解密SM2、SM3、SM4 https://blog.csdn.net/wangmx1993328/article/details/108888130。
http://www.hkea.cn/news/14456023/

相关文章:

  • 海东市公司网站建设郑州工程设计公司官网
  • 适合网站开发的浏览器扬州网络推广公司
  • 酒店网站建设特色成都 视频网站建设
  • dz论坛做视频网站教程前端做项目有哪些网站
  • 商城网站建设价格最优容县住房和城乡建设局网站
  • 安徽网站建设系统装修推广网站哪个好
  • 兑换网站建设搭建流程
  • 上海自适应网站设计神马推广登录
  • 专注聊城做网站的公司学做旗袍衣服的网站
  • 国内网站建设哪家好翻译类公司网站模板
  • 河北建设工程招标网官方网站wordpress新建页面404
  • 济南网站建设 联系小七推广码怎么输入
  • 自己建购物网站网站转备案
  • 湿地公园网站建设2008iis7建立网站
  • 怎样做网站的关键词山东威海最新消息今天
  • 网站资讯创作面包屑 网站
  • 南皮县网站建设价格sem竞价是什么
  • wordpress导航菜单位置网站建设及优化
  • 做网站页面珠海网站建立
  • 怎么让网站快速被收录门户网站管理流程
  • 建设网站需要多少钱济南兴田德润地址网站建设及运营 经营范围
  • 网站接广告安康 住房城乡建设部网站
  • 河南省建设厅网站 吴浩太原市建设交易中心网站
  • 梁山网站建设价格wordpress怎么设计网站
  • 公司做网站需要服务器吗网站建设工种
  • 福田附近网站建设苏州和城乡建设局网站首页
  • 坪山网站建设哪家效益快自适应主题 wordpress
  • 旅游网站开发的背景全网营销销售
  • 网站建设上线多久魔域永恒网页游戏
  • 网站建设二级分销公众号官方