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

做网站联盟黄页网络的推广软件

做网站联盟,黄页网络的推广软件,wordpress用户互通,深圳网站建设服务商哪些好?文章目录 Pre概述什么是非对称加密算法?如何工作?示例:RSA算法特点和优势ECC:另一种非对称加密算法 Code生成公钥和私钥私钥加密私钥加密私钥解密 ( 行不通 )私钥加密公钥解密公钥加密和公钥解密 (行不通)保…

文章目录

  • Pre
  • 概述
    • 什么是非对称加密算法?
    • 如何工作?
    • 示例:RSA算法
    • 特点和优势
    • ECC:另一种非对称加密算法
  • Code
    • 生成公钥和私钥
    • 私钥加密
    • 私钥加密私钥解密 ( 行不通 )
    • 私钥加密公钥解密
    • 公钥加密和公钥解密 (行不通)
    • 保存公钥和私钥
    • 读取私钥
    • 读取公钥
    • 使用读取的公钥加密,私钥解密
  • Source

在这里插入图片描述


Pre

加密与安全_探索非对称加密算法_RSA算法


概述

在数字化时代,网络通信的安全性是必须关注的重要问题之一。非对称加密算法作为现代密码学的重要组成部分,为保护通信的隐私提供了一种可靠的解决方案。


什么是非对称加密算法?

非对称加密算法,又称为公钥加密算法,是一种密码学中的重要概念。它与传统的对称加密算法不同,需要一对密钥:公钥和私钥。这对密钥之间存在着特殊的数学关系,但无法通过公钥推导出私钥,从而保证了通信的安全性。

如何工作?

当发送方A希望将数据发送给接收方B时,A可以使用B的公钥对数据进行加密,得到密文。只有拥有对应私钥的B才能解密这个密文。同样地,B也可以使用A的公钥加密数据,只有A持有私钥才能解密。这种加密和解密使用不同的密钥的特点,使得非对称加密算法成为了保护通信隐私的重要工具。

示例:RSA算法

RSA算法是非对称加密算法中最常见的一种,它利用了大数分解的数学难题,保证了通信的安全性。在RSA算法中,公钥是公开的,私钥是保密的。发送方使用接收方的公钥对数据进行加密,而接收方使用自己的私钥进行解密,从而实现了安全的通信。

特点和优势

  • 加密和解密使用不同的密钥,提高了通信的安全性。
  • 如果使用私钥加密,只能使用公钥解密;反之亦然。
  • 非对称加密算法安全性高,但处理数据速度较慢。

ECC:另一种非对称加密算法

除了RSA算法,还有一种备受关注的非对称加密算法,即椭圆曲线密码学(ECC)。ECC利用了椭圆曲线上的数学难题,相比RSA算法,它能够以更短的密钥长度实现相当于甚至更高的安全级别,同时在资源受限的环境下拥有更好的性能表现。


Code

生成公钥和私钥

package com.artisan;import com.sun.org.apache.xml.internal.security.utils.Base64;import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;/*** @author 小工匠* @version 1.0 */
public class RsaKeyPair {public static void main(String[] args) throws Exception {// 指定加密算法为RSAString algorithm = "RSA";// 创建密钥对生成器对象KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(algorithm);// 生成RSA密钥对KeyPair keyPair = keyPairGenerator.generateKeyPair();// 获取生成的私钥PrivateKey privateKey = keyPair.getPrivate();// 获取生成的公钥PublicKey publicKey = keyPair.getPublic();// 获取私钥的编码字节数组byte[] privateKeyEncoded = privateKey.getEncoded();// 获取公钥的编码字节数组byte[] publicKeyEncoded = publicKey.getEncoded();// 对公私钥的编码字节数组进行Base64编码String privateKeyString = Base64.encode(privateKeyEncoded);String publicKeyString = Base64.encode(publicKeyEncoded);// 打印私钥的Base64编码字符串System.out.println(privateKeyString);System.out.println("----------------------------------");// 打印公钥的Base64编码字符串System.out.println(publicKeyString);}
}

使用RSA算法生成一个密钥对,并将私钥和公钥进行Base64编码后打印出来了。

在这里插入图片描述


私钥加密

package com.artisan;import com.sun.org.apache.xml.internal.security.utils.Base64;import javax.crypto.Cipher;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;/*** @author 小工匠* @version 1.0* @mark: 显示代码,改变世界*/
public class PrivateKeyEnc {public static void main(String[] args) throws Exception {String input = "小工匠的IT生活";// 指定加密算法为RSAString algorithm = "RSA";// 创建密钥对生成器对象KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(algorithm);// 生成RSA密钥对KeyPair keyPair = keyPairGenerator.generateKeyPair();// 获取生成的私钥PrivateKey privateKey = keyPair.getPrivate();// 获取生成的公钥PublicKey publicKey = keyPair.getPublic();// 获取私钥的编码字节数组byte[] privateKeyEncoded = privateKey.getEncoded();// 获取公钥的编码字节数组byte[] publicKeyEncoded = publicKey.getEncoded();// 对公私钥的编码字节数组进行Base64编码String privateKeyString = Base64.encode(privateKeyEncoded);String publicKeyString = Base64.encode(publicKeyEncoded);// 打印生成的密钥对System.out.println("私钥(Base64编码): " + privateKeyString);System.out.println("公钥(Base64编码): " + publicKeyString);// 创建加密对象,参数表示加密算法Cipher cipher = Cipher.getInstance(algorithm);// 初始化加密对象// 第一个参数:加密模式// 第二个参数:使用私钥进行加密cipher.init(Cipher.ENCRYPT_MODE, privateKey);// 使用私钥加密输入的字符串byte[] encryptedBytes = cipher.doFinal(input.getBytes());// 对加密后的字节数组进行Base64编码,并打印System.out.println("加密后的字符串(Base64编码): " + Base64.encode(encryptedBytes));}
}

私钥加密私钥解密 ( 行不通 )

在上面的代码上追加

// 私钥进行解密 (错误的演示)
cipher.init(Cipher.DECRYPT_MODE,privateKey);// 对密文进行解密,不需要使用base64,因为原文不会乱码byte[] bytes1 = cipher.doFinal(encryptedBytes);System.out.println(new String(bytes1));

在这里插入图片描述


私钥加密公钥解密

将上述代码的 私钥解密,换成使用公钥解密

// 公钥进行解密
cipher.init(Cipher.DECRYPT_MODE,publicKey);
// 对密文进行解密,不需要使用base64,因为原文不会乱码
byte[] bytes1 = cipher.doFinal(encryptedBytes);
System.out.println("解密后的字符串: " + new String(bytes1));

在这里插入图片描述


公钥加密和公钥解密 (行不通)

在这里插入图片描述

在这里插入图片描述


保存公钥和私钥

生成RSA非对称加密算法的密钥对,并将生成的公钥和私钥保存在本地文件中。

package com.artisan;import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import org.apache.commons.io.FileUtils;import java.io.File;
import java.nio.charset.Charset;
import java.security.*;public class KeyPairOperate {public static void main(String[] args) throws Exception {// 加密算法String algorithm = "RSA";// 生成密钥对并保存在本地文件中generateKeyToFile(algorithm, "a.pub", "a.pri");}/*** 生成密钥对并保存在本地文件中** @param algorithm : 算法* @param pubPath   : 公钥保存路径* @param priPath   : 私钥保存路径* @throws Exception*/private static void generateKeyToFile(String algorithm, String pubPath, String priPath) throws Exception {// 获取密钥对生成器KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(algorithm);// 获取密钥对KeyPair keyPair = keyPairGenerator.generateKeyPair();// 获取公钥PublicKey publicKey = keyPair.getPublic();// 获取私钥PrivateKey privateKey = keyPair.getPrivate();// 获取byte数组byte[] publicKeyEncoded = publicKey.getEncoded();byte[] privateKeyEncoded = privateKey.getEncoded();// 进行Base64编码String publicKeyString = Base64.encode(publicKeyEncoded);String privateKeyString = Base64.encode(privateKeyEncoded);// 保存文件FileUtils.writeStringToFile(new File(pubPath), publicKeyString, Charset.forName("UTF-8"));FileUtils.writeStringToFile(new File(priPath), privateKeyString, Charset.forName("UTF-8"));}
}

在这里插入图片描述


读取私钥

// 读取私钥
PrivateKey privateKey = readPrivateKeyFromFile(algorithm, "a.pri");byte[] encoded = privateKey.getEncoded();String privateContent = Base64.encode(encoded);System.out.println("私钥内容:" + privateContent);
 /*** @param algorithm* @param filePath* @return* @throws Exception*/private static PrivateKey readPrivateKeyFromFile(String algorithm, String filePath) throws Exception {// 从文件中读取私钥字符串String privateKeyString = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8);// 进行Base64解码byte[] privateKeyEncoded = Base64.decode(privateKeyString);// 获取密钥工厂KeyFactory keyFactory = KeyFactory.getInstance(algorithm);// 构建密钥规范 进行Base64解码PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(Base64.decode(privateKeyString));return keyFactory.generatePrivate(spec);}

在这里插入图片描述
看下生成的文件中的内容:

在这里插入图片描述


读取公钥

// 读取公钥
PublicKey publicKey = readPublicKeyFromFile(algorithm, "a.pub");byte[] publicKeyEncoded = publicKey.getEncoded();
String publicContent = Base64.encode(publicKeyEncoded);
System.out.println("公钥内容:" + publicContent);
 /*** @param algorithm* @param filePath* @return* @throws Exception*/private static PublicKey readPublicKeyFromFile(String algorithm, String filePath) throws Exception {// 将文件内容转为字符串String publicKeyString = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8);// 获取密钥工厂KeyFactory keyFactory = KeyFactory.getInstance(algorithm);// 构建密钥规范 进行Base64解码X509EncodedKeySpec spec = new X509EncodedKeySpec(Base64.decode(publicKeyString));// 生成公钥return keyFactory.generatePublic(spec);}

在这里插入图片描述

在这里插入图片描述


使用读取的公钥加密,私钥解密

// 使用公钥私钥实现加解密
String text = "小工匠的IT生活";
System.out.println("原文:" + text);String enc = encryptRSA(algorithm, publicKey, text);
System.out.println("公钥加密后的数据:" + enc);String plainText = decryptRSA(algorithm, privateKey, enc);
System.out.println("私钥解密后的数据:" + plainText);
 /*** 解密数据** @param algorithm : 算法* @param encrypted : 密文* @param key       : 密钥* @return : 原文* @throws Exception*/public static String decryptRSA(String algorithm, Key key, String encrypted) throws Exception {// 创建加密对象// 参数表示加密算法Cipher cipher = Cipher.getInstance(algorithm);// 私钥进行解密cipher.init(Cipher.DECRYPT_MODE, key);// 由于密文进行了Base64编码, 在这里需要进行解码byte[] decode = Base64.decode(encrypted);// 对密文进行解密,不需要使用base64,因为原文不会乱码byte[] bytes1 = cipher.doFinal(decode);return new String(bytes1);}/*** 使用密钥加密数据** @param algorithm : 算法* @param input     : 原文* @param key       : 密钥* @return : 密文* @throws Exception*/public static String encryptRSA(String algorithm, Key key, String input) throws Exception {// 创建加密对象// 参数表示加密算法Cipher cipher = Cipher.getInstance(algorithm);// 初始化加密// 第一个参数:加密的模式// 第二个参数:使用私钥进行加密cipher.init(Cipher.ENCRYPT_MODE, key);// 私钥加密byte[] bytes = cipher.doFinal(input.getBytes());// 对密文进行Base64编码return Base64.encode(bytes);}

在这里插入图片描述


Source

package com.artisan;import com.sun.org.apache.xml.internal.security.utils.Base64;
import org.apache.commons.io.FileUtils;import javax.crypto.Cipher;
import java.io.File;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;/*** @author 小工匠* @version 1.0* @mark: show me the code , change the world*/
public class KeyPairOperate {public static void main(String[] args) throws Exception {// 加密算法String algorithm = "RSA";// 生成密钥对并保存在本地文件中generateKeyToFile(algorithm, "a.pub", "a.pri");// 读取私钥PrivateKey privateKey = readPrivateKeyFromFile(algorithm, "a.pri");byte[] encoded = privateKey.getEncoded();String privateContent = Base64.encode(encoded);System.out.println("私钥内容:" + privateContent);// 读取公钥PublicKey publicKey = readPublicKeyFromFile(algorithm, "a.pub");byte[] publicKeyEncoded = publicKey.getEncoded();String publicContent = Base64.encode(publicKeyEncoded);System.out.println("公钥内容:" + publicContent);// 使用公钥私钥实现加解密String text = "小工匠的IT生活";System.out.println("原文:" + text);String enc = encryptRSA(algorithm, publicKey, text);System.out.println("公钥加密后的数据:" + enc);String plainText = decryptRSA(algorithm, privateKey, enc);System.out.println("私钥解密后的数据:" + plainText);}/*** 解密数据** @param algorithm : 算法* @param encrypted : 密文* @param key       : 密钥* @return : 原文* @throws Exception*/public static String decryptRSA(String algorithm, Key key, String encrypted) throws Exception {// 创建加密对象// 参数表示加密算法Cipher cipher = Cipher.getInstance(algorithm);// 私钥进行解密cipher.init(Cipher.DECRYPT_MODE, key);// 由于密文进行了Base64编码, 在这里需要进行解码byte[] decode = Base64.decode(encrypted);// 对密文进行解密,不需要使用base64,因为原文不会乱码byte[] bytes1 = cipher.doFinal(decode);return new String(bytes1);}/*** 使用密钥加密数据** @param algorithm : 算法* @param input     : 原文* @param key       : 密钥* @return : 密文* @throws Exception*/public static String encryptRSA(String algorithm, Key key, String input) throws Exception {// 创建加密对象// 参数表示加密算法Cipher cipher = Cipher.getInstance(algorithm);// 初始化加密// 第一个参数:加密的模式// 第二个参数:使用私钥进行加密cipher.init(Cipher.ENCRYPT_MODE, key);// 私钥加密byte[] bytes = cipher.doFinal(input.getBytes());// 对密文进行Base64编码return Base64.encode(bytes);}/*** @param algorithm* @param filePath* @return* @throws Exception*/private static PublicKey readPublicKeyFromFile(String algorithm, String filePath) throws Exception {// 将文件内容转为字符串String publicKeyString = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8);// 获取密钥工厂KeyFactory keyFactory = KeyFactory.getInstance(algorithm);// 构建密钥规范 进行Base64解码X509EncodedKeySpec spec = new X509EncodedKeySpec(Base64.decode(publicKeyString));// 生成公钥return keyFactory.generatePublic(spec);}/*** @param algorithm* @param filePath* @return* @throws Exception*/private static PrivateKey readPrivateKeyFromFile(String algorithm, String filePath) throws Exception {// 从文件中读取私钥字符串String privateKeyString = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8);// 进行Base64解码byte[] privateKeyEncoded = Base64.decode(privateKeyString);// 获取密钥工厂KeyFactory keyFactory = KeyFactory.getInstance(algorithm);// 构建密钥规范 进行Base64解码PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(Base64.decode(privateKeyString));return keyFactory.generatePrivate(spec);}/*** 生成密钥对并保存在本地文件中** @param algorithm : 算法* @param pubPath   : 公钥保存路径* @param priPath   : 私钥保存路径* @throws Exception*/private static void generateKeyToFile(String algorithm, String pubPath, String priPath) throws Exception {// 获取密钥对生成器KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(algorithm);// 获取密钥对KeyPair keyPair = keyPairGenerator.generateKeyPair();// 获取公钥PublicKey publicKey = keyPair.getPublic();// 获取私钥PrivateKey privateKey = keyPair.getPrivate();// 获取byte数组byte[] publicKeyEncoded = publicKey.getEncoded();byte[] privateKeyEncoded = privateKey.getEncoded();// 进行Base64编码String publicKeyString = Base64.encode(publicKeyEncoded);String privateKeyString = Base64.encode(privateKeyEncoded);// 保存文件FileUtils.writeStringToFile(new File(pubPath), publicKeyString, Charset.forName("UTF-8"));FileUtils.writeStringToFile(new File(priPath), privateKeyString, Charset.forName("UTF-8"));}
}

在这里插入图片描述


文章转载自:
http://bang.c7627.cn
http://into.c7627.cn
http://rejuvenesce.c7627.cn
http://nonlogical.c7627.cn
http://ragweed.c7627.cn
http://bouncer.c7627.cn
http://eolienne.c7627.cn
http://hemolymph.c7627.cn
http://revulsion.c7627.cn
http://draftable.c7627.cn
http://talk.c7627.cn
http://endoscopy.c7627.cn
http://horunspatio.c7627.cn
http://peasantize.c7627.cn
http://pseudomonad.c7627.cn
http://standfast.c7627.cn
http://accountably.c7627.cn
http://bibulosity.c7627.cn
http://tinty.c7627.cn
http://crapulence.c7627.cn
http://technopolis.c7627.cn
http://imf.c7627.cn
http://unpennied.c7627.cn
http://pyrrhic.c7627.cn
http://camphoric.c7627.cn
http://nagaoka.c7627.cn
http://shikaree.c7627.cn
http://allocatee.c7627.cn
http://hypnus.c7627.cn
http://smithite.c7627.cn
http://remedially.c7627.cn
http://perbunan.c7627.cn
http://melanite.c7627.cn
http://bulldog.c7627.cn
http://gatefold.c7627.cn
http://somatogenic.c7627.cn
http://reinstatement.c7627.cn
http://cimmerian.c7627.cn
http://hempen.c7627.cn
http://scyphozoan.c7627.cn
http://devilishness.c7627.cn
http://bluff.c7627.cn
http://ist.c7627.cn
http://cyclane.c7627.cn
http://postmillennial.c7627.cn
http://anchoress.c7627.cn
http://flyflap.c7627.cn
http://lough.c7627.cn
http://tapper.c7627.cn
http://vaunty.c7627.cn
http://enantiopathy.c7627.cn
http://aeroginous.c7627.cn
http://meroblast.c7627.cn
http://micronization.c7627.cn
http://broke.c7627.cn
http://stanton.c7627.cn
http://untraceable.c7627.cn
http://mercapto.c7627.cn
http://dynamograph.c7627.cn
http://cream.c7627.cn
http://tehuantepec.c7627.cn
http://thick.c7627.cn
http://toxemic.c7627.cn
http://dolichocranic.c7627.cn
http://juke.c7627.cn
http://jacobinical.c7627.cn
http://southmost.c7627.cn
http://rebuttable.c7627.cn
http://dolerite.c7627.cn
http://sclerotioid.c7627.cn
http://xinca.c7627.cn
http://oncogenicity.c7627.cn
http://aculeated.c7627.cn
http://damascus.c7627.cn
http://swimmer.c7627.cn
http://deteriorate.c7627.cn
http://mink.c7627.cn
http://waddie.c7627.cn
http://diplacusis.c7627.cn
http://endeavor.c7627.cn
http://rebato.c7627.cn
http://fibrillate.c7627.cn
http://cuspy.c7627.cn
http://slander.c7627.cn
http://baddy.c7627.cn
http://cryotron.c7627.cn
http://markup.c7627.cn
http://addlebrained.c7627.cn
http://saddletree.c7627.cn
http://lanneret.c7627.cn
http://incurment.c7627.cn
http://interment.c7627.cn
http://hotfoot.c7627.cn
http://banknote.c7627.cn
http://voip.c7627.cn
http://sudorific.c7627.cn
http://outskirt.c7627.cn
http://reversioner.c7627.cn
http://beep.c7627.cn
http://sensitiveness.c7627.cn
http://www.zhongyajixie.com/news/52617.html

相关文章:

  • 专业政府网站建设公司郑州十大外贸电商平台
  • 做网站能挣钱么怎么给自己的公司建立网站
  • 可以做公司宣传的网站有哪些武汉seo创造者
  • 网站里面发消息怎么做超链接seo刷点击软件
  • 网站图片滚动是怎么做的关键词有哪些关联词
  • 网站建设优化两千字夸克搜索
  • 中国站长之家官网顾问
  • 网站建设修改建议书网站推广优化方式
  • 查看网站是否收录江门网站定制多少钱
  • 杭州网站建设公司排行如何提升网站搜索排名
  • 北京做网站好的公司外贸seo站
  • 企业网站硬件建设方案网络上市场推广
  • 濮阳建设公司网站市场营销证书含金量
  • 做网站的设计公司如何建立自己的网页
  • 织梦网站怎么做伪静态页面游戏代理怎么做
  • 珠海seo网站建设做小程序的公司
  • 网站建设设计视频辽阳网站seo
  • 网站建设活动计划杭州优化外包
  • 大型国企网站建设费用指数基金是什么意思
  • 网站建设的要素惠州网络推广平台
  • 做设计网站的工作内容seo软件优化
  • b2b网站用户体验百度搜索热度指数
  • 做网站指导太原好的网站制作排名
  • 公司注册地址变更手续公众号排名优化
  • 开发网站的可行性时事新闻最新消息
  • 短信轰炸网站开发简述企业网站推广的一般策略
  • 网页 制作seo建站收费地震
  • 网站怎么添加关键词百度竞价排名机制
  • 摄影网站怎么做浏览器下载安装
  • 网站的安全检查怎么做怎么在百度发帖