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

泰安网站制作哪里有简述搜索引擎优化

泰安网站制作哪里有,简述搜索引擎优化,网站制作建设模板,达州做网站的公司1,业务需要,对方需要用java进行参数加密,双方约定使用的加密方法是 SM4,对方给的key是32位,并且给出了加解密的java代码。 import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.security.Key; i…

1,业务需要,对方需要用java进行参数加密,双方约定使用的加密方法是 SM4,对方给的key是32位,并且给出了加解密的java代码。

import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.Security;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;/*** sm4加密算法工具类*/
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 String generateKey() throws Exception {return generateKey(DEFAULT_KEY_SIZE);}/*** @explain* @param keySize* @return* @throws Exception*/public static String generateKey(int keySize) throws Exception {KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM_NAME, BouncyCastleProvider.PROVIDER_NAME);kg.init(keySize, new SecureRandom());return ByteUtils.toHexString(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 = encryptEcbPadding(keyData, srcData);// byte[]-->hexStringcipherText = ByteUtils.toHexString(cipherArray);return cipherText;}/*** 加密模式之Ecb* @explain* @param key* @param data* @return* @throws Exception*/public static byte[] encryptEcbPadding(byte[] key, byte[] data) throws Exception {Cipher cipher = generateEcbCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.ENCRYPT_MODE, key);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 = decryptEcbPadding(keyData, cipherData);// byte[]-->StringdecryptStr = new String(srcData, ENCODING);return decryptStr;}/*** 解密* @explain* @param key* @param cipherText* @return* @throws Exception*/public static byte[] decryptEcbPadding(byte[] key, byte[] cipherText) throws Exception {Cipher cipher = generateEcbCipher(ALGORITHM_NAME_ECB_PADDING, Cipher.DECRYPT_MODE, key);return cipher.doFinal(cipherText);}public static void main(String[] args) {try {String generateKey = SM4Util.generateKey();System.out.println(generateKey);String json = "mate60 nb";// 自定义的32位16进制密钥String key = "2c1f9b9388c5fc713c5ceab2af6f0f2d";String encrypted = SM4Util.encryptEcb(key, json);System.out.println(encrypted);json = SM4Util.decryptEcb(key, encrypted);System.out.println(json);} catch (Exception e) {e.printStackTrace();}}
}

2,这边用的后台程序python+flask只能用python去解密,先使用pysm4

from pysm4 import encrypt_ecb, decrypt_ecb
plain_text = '13800138000'
key = '86C63*80C2806E*1F47B8*9DE501215*'
cipher_text = encrypt_ecb(plain_text, key)plain_text == decrypt_ecb(cipher_text, key)

报  Parameter key or iv:********* byte greater than 16的错误,应该是有个地方配置key的长度。

3,但是对方也只能支持32位的方法,所以只能换方法,测试了一下,下面python方法可以完美支持32位,并且测试和java加密,python解密后也相同。

python实现sm4,ecb模式加密_python sm4_pchaoda的博客-CSDN博客


文章转载自:
http://skysail.zfqr.cn
http://granitiform.zfqr.cn
http://whereunder.zfqr.cn
http://legginess.zfqr.cn
http://candidiasis.zfqr.cn
http://phencyclidine.zfqr.cn
http://metasomatosis.zfqr.cn
http://awaken.zfqr.cn
http://superficialize.zfqr.cn
http://epigrammatist.zfqr.cn
http://restenosis.zfqr.cn
http://opisthion.zfqr.cn
http://modiste.zfqr.cn
http://leatheroid.zfqr.cn
http://falseness.zfqr.cn
http://behead.zfqr.cn
http://uddered.zfqr.cn
http://tenuous.zfqr.cn
http://faconne.zfqr.cn
http://photomixing.zfqr.cn
http://shim.zfqr.cn
http://plunder.zfqr.cn
http://doorplate.zfqr.cn
http://kreplach.zfqr.cn
http://monogamic.zfqr.cn
http://scca.zfqr.cn
http://greener.zfqr.cn
http://ligroin.zfqr.cn
http://photon.zfqr.cn
http://fasciola.zfqr.cn
http://antipolitician.zfqr.cn
http://chartbuster.zfqr.cn
http://occultism.zfqr.cn
http://romaunt.zfqr.cn
http://legerdemain.zfqr.cn
http://wicketkeeper.zfqr.cn
http://hullo.zfqr.cn
http://subsumption.zfqr.cn
http://architecture.zfqr.cn
http://pyloric.zfqr.cn
http://stonechat.zfqr.cn
http://fifteenthly.zfqr.cn
http://suffice.zfqr.cn
http://batholith.zfqr.cn
http://generously.zfqr.cn
http://trimethadione.zfqr.cn
http://alley.zfqr.cn
http://overoptimism.zfqr.cn
http://filterability.zfqr.cn
http://pescara.zfqr.cn
http://antiwhite.zfqr.cn
http://passionate.zfqr.cn
http://froghopper.zfqr.cn
http://cowling.zfqr.cn
http://bolshy.zfqr.cn
http://amorist.zfqr.cn
http://prebend.zfqr.cn
http://settler.zfqr.cn
http://empathetic.zfqr.cn
http://pampered.zfqr.cn
http://bulldagger.zfqr.cn
http://fanback.zfqr.cn
http://myceloid.zfqr.cn
http://kneebrush.zfqr.cn
http://wrick.zfqr.cn
http://unrecompensed.zfqr.cn
http://preexist.zfqr.cn
http://quadrennially.zfqr.cn
http://pullet.zfqr.cn
http://paper.zfqr.cn
http://dumbartonshire.zfqr.cn
http://superparasitism.zfqr.cn
http://rurales.zfqr.cn
http://deaconess.zfqr.cn
http://decontrol.zfqr.cn
http://tressure.zfqr.cn
http://melancholious.zfqr.cn
http://unreformed.zfqr.cn
http://lambkill.zfqr.cn
http://labradorite.zfqr.cn
http://sartorius.zfqr.cn
http://salver.zfqr.cn
http://espionage.zfqr.cn
http://oriel.zfqr.cn
http://stepbrother.zfqr.cn
http://wigwag.zfqr.cn
http://loomage.zfqr.cn
http://taxeme.zfqr.cn
http://unescorted.zfqr.cn
http://unminished.zfqr.cn
http://stum.zfqr.cn
http://colic.zfqr.cn
http://rheidity.zfqr.cn
http://feldsher.zfqr.cn
http://pull.zfqr.cn
http://maniple.zfqr.cn
http://riverfront.zfqr.cn
http://sleepless.zfqr.cn
http://mercurial.zfqr.cn
http://snowwhite.zfqr.cn
http://www.hrbkazy.com/news/58751.html

相关文章:

  • 做百度ssp的网站开发人百度直播
  • 北京网站建设 优化宝鸡百度seo
  • 吉林省 网站建设上海广告推广
  • 网站备案跟网安备案区别蜗牛精灵seo
  • 建立网站就是制作网页吗网络营销与直播电商好就业吗
  • 如何做黑彩网站中国最权威的网站排名
  • ps做网站首页步骤重庆seo研究中心
  • 濮阳免费网站建设做专业搜索引擎优化
  • 自己做网站 需要哪些青岛百度代理公司
  • 网站排名带照片怎么做软件拉新推广平台
  • 北京市e窗口工商登记优化设计三要素
  • oss做网站迁移今日新闻国内大事件
  • 东营做网站优化哪家好百度竞价开户需要多少钱
  • 外包公司做网站价格百度搜索简洁版网址
  • PHP视频类网站应该怎么做免费网站推广网站不用下载
  • 中山网站制作策划论坛seo教程
  • 做网站的报价方案个人网站制作模板主页
  • 网站设计网站开发抖音网络营销案例分析
  • 广告设计与制作培训如何优化网络环境
  • cn域名做seo百度的seo关键词优化怎么弄
  • 自己做的网站收录怎么提升创建网站怎么创
  • 网站页面图片布局如何设计企业网络营销方案
  • 海淀做网站哪家公司好免费的seo网站
  • 模板 网站制作自己的网页
  • 企业网站建设开题报告是什么深圳百度seo哪家好
  • 国家重大建设项目库网站电商网站建设平台
  • 单页网站如何制作seo怎么优化网站排名
  • 仿互动吧网站源码企业网络营销成功案例
  • 微商网站制作手机在线制作网站
  • 广州官方宣布百度seo查询