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

ASP.NET网站建设实战特色的佛山网站建设

ASP.NET网站建设实战,特色的佛山网站建设,wordpress网站打不开,太原站扩建后的规模前言: RSA属于非对称加密。所谓非对称加密,需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公…

前言:

RSA属于非对称加密。所谓非对称加密,需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。

废话不多说,上代码

/*** @description: RSA工具类* @author: JuZi* @create: 2023-08-25 10:30:14**/
@Slf4j
@Component
public class RsaUtil {private static final String KEY_ALGORITHM = "RSA";private static final int KEY_SIZE = 2048;//设置长度private static final String PUBLIC_KEY = "publicKey";private static final String PRIVATE_KEY = "privateKey";public static final String SIGNATURE_ALGORITHM = "SHA256withRSA";/*** 生成公、私钥* 根据需要返回String或byte[]类型** @return*/private static Map<String, String> createRSAKeys() {Map<String, String> keyPairMap = new HashMap<>();try {KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);keyPairGenerator.initialize(KEY_SIZE, new SecureRandom());KeyPair keyPair = keyPairGenerator.generateKeyPair();PublicKey publicKey = keyPair.getPublic();PrivateKey privateKey = keyPair.getPrivate();//获取公、私钥值String publicKeyValue = byte2Base64String(publicKey.getEncoded());String privateKeyValue = byte2Base64String(privateKey.getEncoded());//存入keyPairMap.put(PUBLIC_KEY, publicKeyValue);keyPairMap.put(PRIVATE_KEY, privateKeyValue);} catch (Exception e) {e.printStackTrace();}return keyPairMap;}/*** 通过私钥对参数进行加密** @param Data* @param privateKey* @return*/public static String MakeSign(String Data, String privateKey) {try {byte[] data = Data.getBytes();byte[] keyBytes = base64String2Byte(privateKey);PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);//这个根据需求填充SHA1WithRSA或SHA256WithRSASignature signature = Signature.getInstance(SIGNATURE_ALGORITHM);signature.initSign(priKey);signature.update(data);return byte2Base64String(signature.sign());} catch (Exception e) {return "";}}/*** 使用公钥** @param Data_ori* @param Singnature* @param publicKeyBase64Str* @return*/public static boolean VeriSign(String Data_ori, String Singnature, String publicKeyBase64Str) {try {byte[] signed = base64String2Byte(Singnature);X509EncodedKeySpec keySpec = new X509EncodedKeySpec(base64String2Byte(publicKeyBase64Str));KeyFactory keyFactory = null;keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);PublicKey publicKey = keyFactory.generatePublic(keySpec);//这个根据需求填充SHA1WithRSA或SHA256WithRSASignature signature = Signature.getInstance(SIGNATURE_ALGORITHM);signature.initVerify(publicKey);signature.update(Data_ori.getBytes(StandardCharsets.UTF_8));return signature.verify(signed);} catch (Exception e) {return false;}}/*** base64字符串转字节数组** @param base64Str* @return*/public static byte[] base64String2Byte(String base64Str) {return Base64.decodeBase64(base64Str);}/*** 字节数组转base64字符串** @param bytes* @return*/public static String byte2Base64String(byte[] bytes) {return new String(new Base64().encode(bytes));}public static byte charToByte(char c) {return (byte) "0123456789ABCDEF".indexOf(c);}
}

工具类全文如上所示,接下来看看效果


测试代码


public static void main(String[] args) throws Exception {log.info("-----开始生成公钥和私钥-----");Map<String, String> keys = createRSAKeys();log.info("-----公钥base64:{}-----", keys.get(PUBLIC_KEY));log.info("-----私钥base64:{}-----", keys.get(PRIVATE_KEY));log.info("-----开始对数据进行加密-----");String data = "hello word !";log.info("-----源数据:{}-----", data);String sign = RsaUtil.MakeSign(data, keys.get(PRIVATE_KEY));log.info("-----私钥加密结果:{}-----", sign);log.info("-----开始用公钥对私钥的加密验证-----");log.info("-----公钥验证结果:{}-----", VeriSign(data, sign, keys.get(PUBLIC_KEY)));}

测试结果


在这里插入图片描述

看起来没问题拿下了。

对逆向感兴趣的盆友可以关注交流,不定时更新常用算法和加密。

http://www.yayakq.cn/news/570567/

相关文章:

  • 郑州模板建站平台龙岩做网站公司哪家好
  • 黄冈网站推广优化找哪家工信部网站icp备案
  • seo建站优化推广网站排行
  • 怎么做网站的寄生买了个域名 如何建网站
  • cnzz如何查询某个网站频道的流量门户网站好处
  • 网站大气是什么意思免费服务器建立网站
  • 营销网站建设公司google推广服务商
  • 构建平台还是搭建平台seo如何去做优化
  • 做财经比较好的网站网页搜索的快捷键
  • 搭建网站 网页设计网站都有什么
  • 上海英文网站建设公司企业管理咨询服务公司
  • 想开个小说网站怎么做知名跟单网站做信号提供方
  • 母婴用品网站建设网站运营数据周报表怎么做
  • 西宁站 网站p2p网站建设多少钱
  • 网站建设工具开源如何做公司自己的网站首页
  • wcf网站开发英文网站
  • 锦州做网站哪家好重庆网站排名提升
  • 做单页网站盈利案例检测 网站优化
  • 云网站建站建设银行网站注册企业
  • 教育门户网站建站wordpress 实名
  • 网站前面的小图标怎么做网站开发必须要要掌握的语言
  • 邯郸网站设计招聘网网站视频怎么下载到本地
  • 3000ok新开传奇网站公益服怎么用服务器lp做网站
  • 开发网站公司价格wordpress主题页面丢失
  • 景安建网站岳阳网站开发报价
  • 百度开户做网站2400宝安石岩网站建设
  • 鄞州网站制作网站做3年3年包括什么
  • 哪里网站海报做的比较好外卖小程序怎么制作
  • 品牌设计公司网站网站底部模板
  • 上海网站建设在哪装修类网站模板下载