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

萝岗移动网站建设重庆沙坪坝有什么好玩的

萝岗移动网站建设,重庆沙坪坝有什么好玩的,建立一个公司网站,网站页脚需要放什么用业务来源#xff1a; 最近工作中#xff0c;领导要求给别的项目组的小伙伴提供几个接口#xff0c;要求对接口的参数进行解密操作#xff0c;然后对返回的数据进行加密操作。 这时我想到了AES AES 是对称加密算法#xff0c;优点#xff1a;加密速度快#xff1b;缺点… 业务来源 最近工作中领导要求给别的项目组的小伙伴提供几个接口要求对接口的参数进行解密操作然后对返回的数据进行加密操作。        这时我想到了AES          AES 是对称加密算法优点加密速度快缺点如果秘钥丢失就容易解密密文安全性相对比较差。 代码案例 请求参数格式 {appId: queryLectureListByPage,data: eIVh49T2zKQrtcrhVi6BXcXljN4XFlZc9csQiyayIE1eYeIatVNc9gOTL6HHYj29arBEV3TXMVnQxGIR2EHMfICQzAq5ldGk0ys13Rgiqk } 响应的参数格式 {code: 200,message: ok,data: eHDl88EzrjfZzA179EN6s1dUPs10bWpSWRo2skyQf1eO6x66ypDnVXoyB5wr6T62lmfVdwa3oK0ZFqnOzd3SW/DE6UaMPZtJovzFTpjxbzvnuwO3v9b3vEsA2nOUQEjEqbpzBrzEClNtL2tkSuoA7oJkTiH3ec6otwFFJZGbV93JW9xvFkG3TObHIO6fdqlgNIDGbgs7TnwStc64suuHH7Bt25pCggCq6yVvZx69/0Zprvu5s7Dma8NYy/N69cfWgj06Ik5DXcJlzlZXKQLwwQHiHtleIum2dSF3HWE7ck212n/zn1WVVpGUFnevYCr7Gx/lHbkh/hIOifl8sDpkaISP2tO4kXDi1neUyCnrM7437rf/ZhLPBANkkIO40cZcjEGdrMNswAfZ6XxkBTBq3BMpnjulUbSPZXA6xwwdiaORv1Jx9yxpVBRuw5D4FHbyVPRAh3WP2VMptpzXYeJGBJXU/KvODrKytDb8Iq/PUESzECrrYVc/QwWVeBmNKOFyCtXTB486QWqUGbFvoWHnQUUh/taM8/GOYglWzCtziDntRxum2qruxuq23fnNknKGi3wJBzBSZj8kWw0NUx7RIaZcoqwbzmYx4H6h9D28ViAv/y4/nQGxKho3nlW5EVuk6yQLadc1DSp4Ug } 生成密钥 package com.ly.cloud.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; import com.alibaba.druid.util.Base64; import org.apache.commons.codec.binary.Hex;public class AESUtils {private static final String AES AES;private static final String UTF8 UTF-8;private static final String CIPHERALGORITHM AES/ECB/PKCS5Padding;private static final String Key 9!#95hsup*$1zq7;public static void main(String[] args) throws IOException {// wqkjejqwkejqwk 可随便输入字符串生成对应的密钥String wqkjejqwkejqwk encrypts(wqkjejqwkejqwk);System.out.println(wqkjejqwkejqwk);}/*** 生成base 64 作为AES加密后的密钥*/public static String encrypts(String content) {try {byte[] encodeFormat Key.getBytes();SecretKeySpec key new SecretKeySpec(encodeFormat, AES);// Cipher对象实际完成加密操作Cipher cipher Cipher.getInstance(CIPHERALGORITHM);// 加密内容进行编码byte[] byteContent content.getBytes(UTF8);// 用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, key);// 正式执行加密操作byte[] result cipher.doFinal(byteContent);return Hex.encodeHexString(result);} catch (Exception e) {e.printStackTrace();return null;}}} 思路 通过传入的appId然后去数据库中查询到对应的 唯一密钥。然后根据唯一密钥进行解析密文。然后转成将密文转成 我们需要的参数对象。 核心代码 AES加密解密工具类 package com.ly.cloud.util; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.SecretKeySpec; import com.alibaba.druid.util.Base64; import org.apache.commons.codec.binary.Hex;public class AESUtils {private static final String AES AES;private static final String UTF8 UTF-8;private static final String CIPHERALGORITHM AES/ECB/PKCS5Padding;private static final String Key 9!#95hsup*$1zq7;/*** AES加密Base64转码* * param data 明文16进制* param key 密钥* return*/public static String encrypt(String data, String key) {byte[] keyb null;keyb Base64.base64ToByteArray(key);SecretKeySpec sKeySpec new SecretKeySpec(keyb, AES);Cipher cipher null;try {cipher Cipher.getInstance(AES/ECB/PKCS5Padding);} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {e.printStackTrace();}try {cipher.init(Cipher.ENCRYPT_MODE, sKeySpec);} catch (InvalidKeyException e) {e.printStackTrace();}byte[] bjiamihou null;String miwen ;try {bjiamihou cipher.doFinal(data.getBytes(utf-8));// byte加密后miwen Base64.byteArrayToBase64(bjiamihou);// 密文用base64加密} catch (IllegalBlockSizeException | BadPaddingException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return miwen;}/*** Base64解码 AES解码* * param data 密文 16进制* param key 密钥* return*/public static String decrypt(String data, String key){byte[] keyb null;keyb Base64.base64ToByteArray(key);byte[] miwen Base64.base64ToByteArray(data);SecretKeySpec sKeySpec new SecretKeySpec(keyb, AES);Cipher cipher null;try {cipher Cipher.getInstance(AES/ECB/PKCS5Padding);} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {e.printStackTrace();}try {cipher.init(Cipher.DECRYPT_MODE, sKeySpec);} catch (InvalidKeyException e) {e.printStackTrace();}byte[] bjiemihou null;String mingwen ;try {bjiemihou cipher.doFinal(miwen);// byte加密后mingwen new String(bjiemihou,utf-8);} catch (IllegalBlockSizeException | BadPaddingException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return mingwen;}public static void main(String[] args) throws IOException {String name {\userId\:\179135\,\keyword\:\讲座副标题\,\pageNum\:\1\,\pageSize\:\10\}; // String encrypt encrypt(name, qVkn2qNkkyAAF8PjQL/7GQ); // String name {\userId\:\179135\,\pageNum\:\1\,\pageSize\:\20\};// String name1 {\userId\:\179135\,\organizerId\:\02020\};String name1 {\pageNum\:\1\,\pageSize\:\20\};String encrypt encrypt(name, 8c5e186c9de8e9a628234522a794f45b0f);System.out.println(encrypt);System.out.println(---------);System.out.println(decrypt(encrypt,8c5e186c9de8e9a628234522a794f45b0f));String wqkjejqwkejqwk encrypts(wqkjejqwkererjqwk);System.out.println(wqkjejqwkererjqwk);}/*** 生成base 64 作为AES加密后的密钥*/public static String encrypts(String content) {try {byte[] encodeFormat Key.getBytes();SecretKeySpec key new SecretKeySpec(encodeFormat, AES);// Cipher对象实际完成加密操作Cipher cipher Cipher.getInstance(CIPHERALGORITHM);// 加密内容进行编码byte[] byteContent content.getBytes(UTF8);// 用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, key);// 正式执行加密操作byte[] result cipher.doFinal(byteContent);return Hex.encodeHexString(result);} catch (Exception e) {e.printStackTrace();return null;}}// 加密 public static String dataToAES(String password,String data){String hexStr encrypt(data, password);return hexStr;}// 解密public static String AESToData(String password, String data){return decrypt(data, password);}} 业务层核心代码  Overridepublic String organizerList(LectureEncryptDto encrypt) throws InvocationTargetException, NoSuchMethodException, IllegalAccessException {//获取appid 对应的key值String key checkParam(encrypt);// 解密参数 根据传入不同的 对象返回不同的对象MySubscribeDto subscribe returnObject(MySubscribeDto.class, key, encrypt);//校验解密后参数是否为空checkPageParam(subscribe, 2);PageMySubscribe page new Page(subscribe.getPageNum(), subscribe.getPageSize());PageDtoMySubscribe pageDto new PageDto();IPageMySubscribe pageData lectureMapper.organizerList(page, subscribe.getUserId());pageDto.setTotal(pageData.getTotal());pageDto.setPages(pageData.getPages());pageDto.setPageSize(subscribe.getPageSize());pageDto.setPageNum(subscribe.getPageNum());pageDto.setList(pageData.getRecords());//加密String json JSONUtil.toJsonStr(pageDto);return AESUtils.dataToAES(key, json);}/*** 根据传入的不同的对象将他进行解密。然后返回*/public static T T returnObject(ClassT clazz, String key, LectureEncryptDto dto) {Gson gson new Gson();String decryptedData AESUtils.AESToData(key, dto.getData());if (StrUtil.isEmpty(decryptedData)) {throw new BusinessException(appId生成的data密钥有误);}return gson.fromJson(decryptedData, clazz);}/*** 检查appID 是否有效*/public String checkParam(LectureEncryptDto dto) {// 根据他传的appid 去数据库里取出appid 对应的 key值String key lectureMapper.getAppIdKey(dto.getAppId());if (StrUtil.isEmpty(key)) {throw new BusinessException(appId有误请重新输入);}return key;}/*** 检查分页-以及其它所需参数是否为空*/public static void checkPageParam(Object objects, String key) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {Class? clazz objects.getClass();Method getPageSizeMethod clazz.getMethod(getPageSize);Method getPageNumMethod clazz.getMethod(getPageNum);Integer pageSize (Integer) getPageSizeMethod.invoke(objects);Integer pageNum (Integer) getPageNumMethod.invoke(objects);if (pageSize null || pageNum null) {throw new BusinessException(页码不能为空);}// 根据key设置相应的属性switch (key) {case 1:break;case 2:Method userIdMethod clazz.getMethod(getUserId);if (StrUtil.isEmpty((String) userIdMethod.invoke(objects))) {throw new BusinessException(学工号不能为空);}break;case 3:Method user clazz.getMethod(getUserId);Method getId clazz.getMethod(getOrganizerId);if (StrUtil.isEmpty((String) user.invoke(objects)) StrUtil.isEmpty((String) getId.invoke(objects))) {throw new BusinessException(学工号或主办单位ID不能为空);}}}
http://www.w-s-a.com/news/916213/

相关文章:

  • 大连模板网站制作哪家好wordpress 安装不上
  • 宝塔搭建网站首页图片点击率如何提高
  • 长沙找人做网站wordpress如何安装模板
  • 比较好的国外网站建设公司wordpress短代码可视化
  • 做新的网站网站个性化
  • 吉安做网站的英文网站 字体大小
  • 外贸网站服务商wordpress主题handsome
  • 云主机多个网站如何优化网站图片
  • 松江移动网站建设成都app开发制作公司
  • 锦州做网站的公司百度seo搜索营销新视角
  • 做画册找什么网站海南建设工程股份有限公司网站
  • 网站机房建设有助于网站备案
  • 北辰苏州网站建设抖音代运营投诉平台
  • 安徽住房与城乡建设部网站如何新建站点
  • 企业网站开发的感想网站开发公司所需投入资源
  • 如何拿网站后台账号wordpress 电影下载站源码
  • 公司网站建设方案书安卓应用市场免费下载安装
  • phpmysql网站设计建设好一个网站需要
  • 自己做的网站能被别人看到吗idea怎么做网页
  • 燕莎网站建设互联网排名前十的公司2021
  • 微软云怎么做网站微商城和小程序区别
  • 哈尔滨建站的系统网站到首页排名
  • 运动网站开发的需求分析南通市住房和城乡建设局网站
  • 佘山做网站谷歌云做网站
  • 免费发布信息网站大全666做p2p网站费用
  • 北京 网站建设咨询顾问公司网络公司有几家
  • 设计类网站如何用ps做网站首页
  • 品牌网站建设的关键事项设计网有哪些
  • 网站没收录徐州建设工程审图中心网站
  • 网站建设记账做什么科目erp系统有哪些软件