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

网站的优化什么做今日头条新闻头条

网站的优化什么做,今日头条新闻头条,福州哪家网站制作设计高端还实惠,青岛建设网站当我们开发金融、国企、政府信息系统时,不仅要符合网络安全的等保二级、等保三级,还要求符合国密的安全要求,等保测评已经实行很久了,而国密测评近两年才刚开始。那什么是密码/国密?什么是密评?本文就关于密…

当我们开发金融、国企、政府信息系统时,不仅要符合网络安全的等保二级、等保三级,还要求符合国密的安全要求,等保测评已经实行很久了,而国密测评近两年才刚开始。那什么是密码/国密?什么是密评?本文就关于密码/国密及应用进行基础的知识梳理、记录。 

01、密码(国密)算法有哪些?

国产化替代大家应该都熟悉了,为了应对日益复杂多变的国际形势(丑国),保障我们的IT技术自助可控,从硬件到软件,都在进行着国产化替代。密码领域也不例外,国密就是用来代替国际密码的。先来了解下密码的分类,及对应的国密算法。

image

我国国家密码管理局在2012年公布了无线局域网产品使用的SM4密码算法——商用密码算法。
它是分组算法当中的一种,算法特点是设计简沽,结构有特点,安全高效。
数据分组长度为128比特,密钥长度为128 比特。加密算法与密钥扩展算法都采用32轮迭代结构。
SM4密码算法以字节(8位)和字(32位)作为单位进行数据处理。

SM4密码算法是对合运算,因此解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

02、SM4基本算法 

SM4密码算法使用的基本运算为异或和循环移位。

异或:⊕,32位异或运算

循环移位:<<<i,把32位字循环左移i位

字:(32位)

03、依赖

    <!--sm4加密算法依赖--><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.59</version></dependency>

04、工具类


import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.Security;
import java.util.Arrays;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;/*** sm4加密算法工具类* @explain sm4加密、解密与加密结果验证 可逆算法* @Autor:jingyao*/
public class Sm4Util {static {Security.addProvider(new BouncyCastleProvider());}private static final String ENCODING = "UTF-8";public static final String ALGORITHM_NAME = "SM4";// 加密算法/分组加密模式/分组填充方式// PKCS5Padding-以8个字节为一组进行分组加密// 定义分组加密模式使用:PKCS5Paddingpublic static final String ALGORITHM_NAME_ECB_PADDING = "SM4/ECB/PKCS5Padding";// 128-32位16进制;256-64位16进制public static final int DEFAULT_KEY_SIZE = 128;/*** 生成ECB暗号* @explain ECB模式(电子密码本模式:Electronic codebook)* @param algorithmName 算法名称* @param mode 模式* @param key* @return* @throws Exception*/private static Cipher generateEcbCipher(String algorithmName, int mode, byte[] key) throws Exception {Cipher cipher = Cipher.getInstance(algorithmName, BouncyCastleProvider.PROVIDER_NAME);Key sm4Key = new SecretKeySpec(key, ALGORITHM_NAME);cipher.init(mode, sm4Key);return cipher;}/*** 自动生成密钥* @explain* @return* @throws NoSuchAlgorithmException* @throws NoSuchProviderException*/public static byte[] generateKey() throws Exception {return generateKey(DEFAULT_KEY_SIZE);}//加密******************************************/*** @explain 系统产生秘钥* @param keySize* @return* @throws Exception*/public static byte[] generateKey(int keySize) throws Exception {KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM_NAME, BouncyCastleProvider.PROVIDER_NAME);kg.init(keySize, new SecureRandom());return kg.generateKey().getEncoded();}/*** sm4加密* @explain 加密模式:ECB 密文长度不固定,会随着被加密字符串长度的变化而变化* @param hexKey 16进制密钥(忽略大小写)* @param paramStr 待加密字符串* @return 返回16进制的加密字符串* @throws Exception*/public static String encryptEcb(String hexKey, String paramStr) throws Exception {String cipherText = "";// 16进制字符串-->byte[]byte[] keyData = ByteUtils.fromHexString(hexKey);// String-->byte[]byte[] srcData = paramStr.getBytes(ENCODING);// 加密后的数组byte[] cipherArray = encrypt_Ecb_Padding(keyData, srcData);// byte[]-->hexStringcipherText = ByteUtils.toHexString(cipherArray);return cipherText;}/*** 加密模式之Ecb* @param key* @param data* @return* @throws Exception*/public static byte[] encrypt_Ecb_Padding(byte[] key, byte[] data) throws Exception {Cipher cipher = generateEcbCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.ENCRYPT_MODE, key);//声称Ecb暗号,通过第二个参数判断加密还是解密return cipher.doFinal(data);}//解密****************************************/*** sm4解密* @explain 解密模式:采用ECB* @param hexKey 16进制密钥* @param cipherText 16进制的加密字符串(忽略大小写)* @return 解密后的字符串* @throws Exception*/public static String decryptEcb(String hexKey, String cipherText) throws Exception {// 用于接收解密后的字符串String decryptStr = "";// hexString-->byte[]byte[] keyData = ByteUtils.fromHexString(hexKey);// hexString-->byte[]byte[] cipherData = ByteUtils.fromHexString(cipherText);// 解密byte[] srcData = decrypt_Ecb_Padding(keyData, cipherData);// byte[]-->StringdecryptStr = new String(srcData, ENCODING);return decryptStr;}/*** 解密* @explain* @param key* @param cipherText* @return* @throws Exception*/public static byte[] decrypt_Ecb_Padding(byte[] key, byte[] cipherText) throws Exception {Cipher cipher = generateEcbCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.DECRYPT_MODE, key);//生成Ecb暗号,通过第二个参数判断加密还是解密return cipher.doFinal(cipherText);}/*** 校验加密前后的字符串是否为同一数据* @explain* @param hexKey 16进制密钥(忽略大小写)* @param cipherText 16进制加密后的字符串* @param paramStr 加密前的字符串* @return 是否为同一数据* @throws Exception*/public static boolean verifyEcb(String hexKey, String cipherText, String paramStr) throws Exception {// 用于接收校验结果boolean flag = false;// hexString-->byte[]byte[] keyData = ByteUtils.fromHexString(hexKey);// 将16进制字符串转换成数组byte[] cipherData = ByteUtils.fromHexString(cipherText);// 解密byte[] decryptData = decrypt_Ecb_Padding(keyData, cipherData);// 将原字符串转换成byte[]byte[] srcData = paramStr.getBytes(ENCODING);// 判断2个数组是否一致flag = Arrays.equals(decryptData, srcData);return flag;}}

05、测试Demo

import com.example.mybatiseplusdemo.util.Sm4Util;public class Sm4Test {public static void main(String[] args) {try {System.out.println("开始测试SM4加密解密====================");String json = "{\"name\":\"大司命\",\"描述\":\"测试SM4加密解密\"}";System.out.println("加密前:"+json);//自定义的32位16进制秘钥String key = "86C63180C2806ED1F47B859DE501215B";String cipher = Sm4Util.encryptEcb(key,json);//sm4加密System.out.println("加密后:"+cipher);System.out.println("校验:"+Sm4Util.verifyEcb(key,cipher,json));//校验加密前后是否为同一数据json = Sm4Util.decryptEcb(key,cipher);//解密System.out.println("解密后:"+json);System.out.println("结束===================");} catch (Exception e) {e.printStackTrace();}}
}


文章转载自:
http://subaqueous.rsnd.cn
http://trove.rsnd.cn
http://cindy.rsnd.cn
http://probative.rsnd.cn
http://blintz.rsnd.cn
http://raptatorial.rsnd.cn
http://stated.rsnd.cn
http://computerman.rsnd.cn
http://sweeny.rsnd.cn
http://mamluk.rsnd.cn
http://thaumaturgist.rsnd.cn
http://dantesque.rsnd.cn
http://limburg.rsnd.cn
http://bloom.rsnd.cn
http://reclassify.rsnd.cn
http://pandemonium.rsnd.cn
http://lecithic.rsnd.cn
http://linguist.rsnd.cn
http://spindleshanks.rsnd.cn
http://scopulate.rsnd.cn
http://perceptron.rsnd.cn
http://preserval.rsnd.cn
http://rodney.rsnd.cn
http://illimitable.rsnd.cn
http://multispectral.rsnd.cn
http://undivulged.rsnd.cn
http://enugu.rsnd.cn
http://interrogator.rsnd.cn
http://diastolic.rsnd.cn
http://bender.rsnd.cn
http://oolith.rsnd.cn
http://perthite.rsnd.cn
http://gasthof.rsnd.cn
http://drumstick.rsnd.cn
http://dasymeter.rsnd.cn
http://voluntarism.rsnd.cn
http://trichomonal.rsnd.cn
http://semilog.rsnd.cn
http://inordinately.rsnd.cn
http://doat.rsnd.cn
http://heckler.rsnd.cn
http://hesiodian.rsnd.cn
http://immanent.rsnd.cn
http://sourcrout.rsnd.cn
http://bfc.rsnd.cn
http://impayable.rsnd.cn
http://chronosphere.rsnd.cn
http://ferricyanogen.rsnd.cn
http://alphahelical.rsnd.cn
http://songful.rsnd.cn
http://ethiopian.rsnd.cn
http://buddhist.rsnd.cn
http://underactor.rsnd.cn
http://periwig.rsnd.cn
http://ladik.rsnd.cn
http://disincentive.rsnd.cn
http://parellel.rsnd.cn
http://undertrump.rsnd.cn
http://extend.rsnd.cn
http://espana.rsnd.cn
http://scarlet.rsnd.cn
http://countrywoman.rsnd.cn
http://autochthonous.rsnd.cn
http://intragenic.rsnd.cn
http://dusty.rsnd.cn
http://colonialist.rsnd.cn
http://cuboid.rsnd.cn
http://pathetic.rsnd.cn
http://pectinesterase.rsnd.cn
http://totalitarianism.rsnd.cn
http://horsily.rsnd.cn
http://ragi.rsnd.cn
http://mingle.rsnd.cn
http://eobiont.rsnd.cn
http://logorrhea.rsnd.cn
http://outlandish.rsnd.cn
http://photoeffect.rsnd.cn
http://gom.rsnd.cn
http://unremitted.rsnd.cn
http://acrocentric.rsnd.cn
http://subtrahend.rsnd.cn
http://ichthyologic.rsnd.cn
http://batrachotoxin.rsnd.cn
http://ziram.rsnd.cn
http://lamaist.rsnd.cn
http://cretinoid.rsnd.cn
http://tyrolean.rsnd.cn
http://systemize.rsnd.cn
http://fgetchar.rsnd.cn
http://strobe.rsnd.cn
http://repairman.rsnd.cn
http://unidirectional.rsnd.cn
http://dehydratase.rsnd.cn
http://sorceress.rsnd.cn
http://reconsider.rsnd.cn
http://extortion.rsnd.cn
http://faultless.rsnd.cn
http://dripple.rsnd.cn
http://proctitis.rsnd.cn
http://rhizomorph.rsnd.cn
http://www.15wanjia.com/news/70893.html

相关文章:

  • wordpress页面设置栏目自动优化句子的软件
  • 企业网站模板网 凡建站制作网页需要多少钱
  • 做冰淇淋生意网站百度seo最成功的优化
  • b站推广网站入口2024的推广形式郑州seo技术服务顾问
  • php 动态网站开发答案北京网聘咨询有限公司
  • o2o网站开发成人培训机构
  • 网站维护服务费网络推广公司有哪些
  • 网站群集约化建设游戏代理免费加盟
  • 厦门市建设执业资格注册管理中心网站最新国际新闻事件
  • 重庆公积金门户网站自动app优化
  • 室内设计考研搜狗seo怎么做
  • 哈尔滨建设工程信息网站品牌关键词排名优化怎么做
  • 免费网站百度seo 站长工具
  • 网站开发岗位说明书怀柔网站整站优化公司
  • c 网站开发需要学什么软件有哪些百度收录查询入口
  • 哪个网站做男士皮鞋批发免费开通网站
  • 找人做网站都要提供什么武汉seo培训
  • 带视频的网站模板北京it培训机构哪家好
  • 西充建设局网站淘宝运营培训班去哪里学
  • 技术支持 昆明网站建设环球资源网站网址
  • 网站开发能不能用win7系统2345网址导航是病毒吗
  • 北京市平谷区住房和城乡建设委员会网站seo快速优化报价
  • 一站式做网站平台知识付费小程序搭建
  • 西部数据网站建设免费b站推广网站
  • html5制作网站深圳网站营销seo电话
  • 企业做网站的多吗优化合作平台
  • 关于旅游的网站建设论文电商代运营公司100强
  • 网站的建设方法包括哪些内容简述提升关键词排名的方法
  • 律师网站建设方案体验营销案例分析
  • 免费做图片的网站校园推广的方式有哪些