• 关于

    3des加密

    的搜索结果

回答

1、对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加

知与谁同 2019-12-02 01:26:40 0 浏览量 回答数 0

回答

几种对称性加密算法:AES,DES,3DES DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。 相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。 几种非对称性加密算法:RSA,DSA,ECC RSA和DSA的安全性及其它各方面性能都差不多,而ECC较之则有着很多的性能优越,包括处理速度,带宽要求,存储空间等等。 几种线性散列算法(签名算法):MD5,SHA1,HMAC 这几种算法只生成一串不可逆的密文,经常用其效验数据传输过程中是否经过修改,因为相同的生成算法对于同一明文只会生成唯一的密文,若相同算法生成的密文不同,则证明传输数据进行过了修改。通常在数据传说过程前,使用MD5和SHA1算法均需要发送和接收数据双方在数据传送之前就知道密匙生成算法,而HMAC与之不同的是需要生成一个密匙,发送方用此密匙对数据进行摘要处理(生成密文),接收方再利用此密匙对接收到的数据进行摘要处理,再判断生成的密文是否相同。 对于各种加密算法的选用: 由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。 在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。 如果在选定了加密算法后,那采用多少位的密钥呢。一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

liujae 2019-12-02 01:26:58 0 浏览量 回答数 0

回答

几种对称性加密算法:AES,DES,3DES DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,如此以使得密文强度更高。相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准。 几种非对称性加密算法:RSA,DSA,ECC RSA和DSA的安全性及其它各方面性能都差不多,而ECC较之则有着很多的性能优越,包括处理速度,带宽要求,存储空间等等。 几种线性散列算法(签名算法):MD5,SHA1,HMAC 这几种算法只生成一串不可逆的密文,经常用其效验数据传输过程中是否经过修改,因为相同的生成算法对于同一明文只会生成唯一的密文,若相同算法生成的密文不同,则证明传输数据进行过了修改。通常在数据传说过程前,使用MD5和SHA1算法均需要发送和接收数据双方在数据传送之前就知道密匙生成算法,而HMAC与之不同的是需要生成一个密匙,发送方用此密匙对数据进行摘要处理(生成密文),接收方再利用此密匙对接收到的数据进行摘要处理,再判断生成的密文是否相同。 对于各种加密算法的选用: 由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。 在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。 如果在选定了加密算法后,那采用多少位的密钥呢。一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。

liujae 2019-12-02 01:27:00 0 浏览量 回答数 0

万券齐发助力企业上云,爆款产品低至2.2折起!

限量神券最高减1000,抢完即止!云服务器ECS新用户首购低至0.95折!

回答

大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密。常用的对称加密算法:DES算法 、3DES算法、AES算法。非对称加密算法:RSA 公钥加密算法、DSA算法

1565966273186108 2019-12-02 01:50:17 0 浏览量 回答数 0

回答

aes/des加密速度快,适合大量数据,des容易破解,一般用3重des,后来又出现了更快更安全的aes rsa是公钥加密,速度慢,只能处理少量数据,优点是公钥即使在不安全的网络上公开,也能保证安全 常见情况是双方用rsa协商出一个密钥后通过aes/3des给数据加密

行者武松 2019-12-02 01:26:23 0 浏览量 回答数 0

回答

为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。 1.对称加密算法 OpenSSL一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还支持三个密钥和两个密钥3DES算法。 2.非对称加密算法 OpenSSL一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。

云篆 2019-12-02 01:26:56 0 浏览量 回答数 0

回答

1、对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高; 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 2、非对称算法 常见的非对称加密算法如下: RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准); ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。 算法原理——椭圆曲线上的难题 椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。 将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的密码体制。

青衫无名 2019-12-02 01:26:38 0 浏览量 回答数 0

回答

1、对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高; 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 2、非对称算法 常见的非对称加密算法如下: RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准); ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。 算法原理——椭圆曲线上的难题 椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。 将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的密码体制。

行者武松 2019-12-02 01:27:08 0 浏览量 回答数 0

问题

现java后端需要3des加密的请求参数,php如何实现NoPadding的3des加密?

frain 2019-12-01 20:18:03 1153 浏览量 回答数 1

问题

iOS中 3des加密后得到的密文 后台解不出来

杨冬芳 2019-12-01 20:12:57 842 浏览量 回答数 1

回答

国内防泄密系统常用的加密算法有三种,IDEA 算法、RSA算法、AES算法,加密强度来讲,AES算法加密强度最高。IDEA算法IDEA算法属于对称加密算法,对称加密算法中,数据加密和解密采用的都是同一个密钥,因而其安全性依赖于所持有密钥的安全性。 目前最常见的对称加密算法为数据加密标准DES算法,但传统的DES算法由于只有56位的密钥,因此已经不适应当今分布式开放网络对数据加密安全性的要求。欧洲数据加密标准IDEA等,目前加密强度最高的对称加密算法是128位的DES加密算法。对称加密算法的主要优点是加密和解密速度快,加密效率高,且算法公开.缺点是实现密钥的秘密分发困难,在大量用户的情况下密钥管理复杂,而且无法完成身份认证等功能,不便于应用在网络开放的环境中。 由于加密算法是公开的,所以被破解的风险比较高。对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高、被破解风险高。RSA算法RSA算法是非对称加密算法,非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要,但加密和解密花费时间长、速度慢,它不适合于对文件加密而只适用于对少量数据进行加密。对称加密算法、非对称加密算法和不可逆加密算法可以分别应用于数据加密、身份认证和数据安全传输。RSA算法是建立在大数分解和素数检测的理论基础上。RSA密钥的产生过程:独立地选取两个互异的大素数p和q(保密)。计算n=p×q(公开),则ф(n)=(p-1)*(q-1)(保密)随机选取整数e,使得1<e<ф(n)并且gcd(ф(n),e)=1(公开)计算d,d=e-1mod(ф(n))保密。RSA私有密钥由{d,n},公开密钥由{e,n}组成RSA的加密/解密过程:首先把要求加密的明文信息M数字化,分块;然后,加密过程:C=Me(mod n)解密过程:M=Cd(mod n)非对称密钥加密体制的优点与缺点:解决了密钥管理问题,通过特有的密钥发放体制,使得当用户数大幅度增加时,密钥也不会向外扩散;由于密钥已事先分配,不需要在通信过程中传输密钥,安全性大大提高;具有很高的加密强度。与对称加密体制相比,非对称加密体制的加密、解密的速度较慢、被破解风险较小。AES加密算法AES加密算法属于对称加密算法, 对称加密算法的特征是加密过程中需要使用密钥,输入明文后由系统直接经过加密算法处理成密文,这种加密后的数据需要密钥才能解密。1997年4月15日,美国国家标准和技术研究所NIST发起了征集AES算法的活动,并成立了专门的AES工作组,目的是为了确定一个非保密的,公开披露的,全球免费使用的分组密码算,法用于保护下一世纪政府的敏感信息,并希望成为秘密和公开部门的数据加密标准.1997年9月12日,在联邦登记处公布了征集AES候选算法的通告.AES的基本要求是比三重DES快而且至少和三重DES一样安全,分组长度128比特,密钥长度为128/192/256比特.1998年8月20日,NIST召开了第一次候选大会,并公布了15个候选算法.1999年3月22日举行了第二次AES候选会议,从中选出5个.AES将成为新的公开的联邦信息处理标准(FIPS--Federal Information Processing Standard),用于美国政府组织保护敏感信息的一种特殊的加密算法.美国国家标准技术研究所(NIST)预测AES会被广泛地应用于组织,学院及个人.入选AES的五种算法是MARS,RC6,Serpent,Twofish,Rijndael.2000年10月2日,美国商务部部长NormanY. Mineta宣布,经过世界著名密码专家之间的竞争,Rijndael数据加密算法最终获胜.为此而在全球范围内角逐了数年的激烈竞争宣告结束.这一新加密标准的问世将取代DES、RSA数据加密标准,成为21世纪保护国家敏感信息的高级算法。与DES、RSA加密算法相比,AES加密算法的优点为加解密的速度更快、加密强度最高、且不占用硬件资源。 随着信息化的高速发展,人们对信息安全的需求接踵而至,人才竞争、市场竞争、金融危机、敌特机构等都给企事业单位的发展带来巨大风险,内部窃密、黑客攻击、无意识泄密等窃密手段成为了人与人之间、企业与企业之间、国与国之间的安全隐患。市场的需求、人的安全意识、环境的诸多因素促使着我国的信息安全高速发展,信息安全经历了从传统的单一防护如防火墙到信息安全整体解决方案、从传统的老三样防火墙、入侵检测、杀毒软件到多元化的信息安全防护、从传统的外部网络防护到内网安全、主机安全等。传统数据加密技术分析信息安全传统的老三样(防火墙、入侵检测、防病毒)成为了企事业单位网络建设的基础架构,已经远远不能满足用户的安全需求,新型的安全防护手段逐步成为了信息安全发展的主力军。例如主机监控、慧点科技文档加密等技术。在新型安全产品的队列中,主机监控主要采用外围围追堵截的技术方案,虽然对信息安全有一定的提高,但是因为产品自身依赖于操作系统,对数据自身没有有效的安全防护,所以存在着诸多安全漏洞,例如:最基础的手段拆拔硬盘、winpe光盘引导、USB引导等方式即可将数据盗走,而且不留任何痕迹;此技术更多的可以理解为企业资产管理软件,单一的产品无法满足用户对信息安全的要求。文档加密是现今信息安全防护的主力军,采用透明加解密技术,对数据进行强制加密,不改变用户原有的使用习惯;此技术对数据自身加密,不管是脱离操作系统,还是非法脱离安全环境,用户数据自身都是安全的,对环境的依赖性比较小。市面上的文档加密主要的技术分为磁盘加密、应用层加密、驱动级加密等几种技术,应用层加密因为对应用程序的依赖性比较强,存在诸多兼容性和二次开发的问题,逐步被各信息安全厂商所淘汰。当今主流的两大数据加密技术我们所能常见到的主要就是磁盘加密和驱动级解密技术:全盘加密技术是主要是对磁盘进行全盘加密,并且采用主机监控、防水墙等其他防护手段进行整体防护,磁盘加密主要为用户提供一个安全的运行环境,数据自身未进行加密,操作系统一旦启动完毕,数据自身在硬盘上以明文形式存在,主要靠防水墙的围追堵截等方式进行保护。磁盘加密技术的主要弊端是对磁盘进行加密的时间周期较长,造成项目的实施周期也较长,用户一般无法忍耐;磁盘加密技术是对磁盘进行全盘加密,一旦操作系统出现问题。需要对数据进行恢复也是一件让用户比较头痛的事情,正常一块500G的硬盘解密一次所需时间需要3-4个小时;磁盘加密技术相对来讲真正要做到全盘加密还不是非常成熟,尤其是对系统盘的保护,至今市面上的主要做法是对系统盘不做加密防护,而是采用外围技术进行安全访问控制,大家知道操作系统的版本不断升级,微软自身的安全机制越来越高,人们对系统的控制力度越来越低,尤其黑客技术层层攀高,一旦防护体系被打破,所有一切将暴露无疑。另外,磁盘加密技术是对全盘的信息进行安全管控,其中包括系统文件,对系统的效率性能将大大影响。驱动级技术是当今信息加密的主流技术,采用进程+后缀的方式进行安全防护,用户可以根据企事业单位的实际情况灵活配置,对重要的数据进行强制加密,大大提高了系统的运行效率。驱动级加密技术与磁盘加密技术的最大区别就是驱动级技术会对用户的数据自身进行保护,驱动级加密采用透明加解密技术,用户感觉不到系统的存在,不改变用户的原有操作,数据一旦脱离安全环境,用户将无法使用,有效提高了数据的安全性;另外驱动级加密技术比磁盘加密技术管理可以更加细粒度,有效实现数据的全生命周期管理,可以控制文件的使用时间、次数、复制、截屏、录像等操作,并且可以对文件的内部进行细粒度的授权管理和数据的外出访问控制,做到数据的全方位管理。驱动级加密技术在给用户的数据带来安全的同时,也给用户的使用便利性带来一定的问题,驱动级加密采用进程加密技术,对同类文件进行全部加密,无法有效区别个人文件与企业文件数据的分类管理,个人电脑与企业办公的并行运行等问题。

聚小编 2019-12-02 01:26:37 0 浏览量 回答数 0

问题

JAVASCRIPT 客户端加密 PHP服务端解密

a123456678 2019-12-01 20:14:09 1300 浏览量 回答数 1

回答

您好, <一>. MD5加密算法: ? ? ? ?消息摘要算法第五版(Message Digest Algorithm),是一种单向加密算法,只能加密、无法解密。然而MD5加密算法已经被中国山东大学王小云教授成功破译,但是在安全性要求不高的场景下,MD5加密算法仍然具有应用价值。 ?1. 创建md5对象:? <pre name="code" class="java">MessageDigest md5 = MessageDigest.getInstance("md5"); ?2. ?进行加密操作:? byte[] cipherData = md5.digest(plainText.getBytes()); ?3. ?将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作,转换为int类型的正整数。? String toHexStr = Integer.toHexString(cipher & 0xff); ?4. 如果该正数小于16(长度为1个字符),前面拼接0占位:确保最后生成的是32位字符串。? builder.append(toHexStr.length() == 1 ? "0" + toHexStr : toHexStr); ?5.?加密转换之后的字符串为:c0bb4f54f1d8b14caf6fe1069e5f93ad? ?6. 完整的MD5算法应用如下所示:? /** * 功能简述: 测试MD5单向加密. * @throws Exception */ @Test public void test01() throws Exception { String plainText = "Hello , world !"; MessageDigest md5 = MessageDigest.getInstance("md5"); byte[] cipherData = md5.digest(plainText.getBytes()); StringBuilder builder = new StringBuilder(); for(byte cipher : cipherData) { String toHexStr = Integer.toHexString(cipher & 0xff); builder.append(toHexStr.length() == 1 ? "0" + toHexStr : toHexStr); } System.out.println(builder.toString()); //c0bb4f54f1d8b14caf6fe1069e5f93ad } ?? <二>. 使用BASE64进行加密/解密: ? ? ? ? 使用BASE64算法通常用作对二进制数据进行加密,加密之后的数据不易被肉眼识别。严格来说,经过BASE64加密的数据其实没有安全性可言,因为它的加密解密算法都是公开的,典型的防菜鸟不防程序猿的呀。?经过标准的BASE64算法加密后的数据,?通常包含/、+、=等特殊符号,不适合作为url参数传递,幸运的是Apache的Commons Codec模块提供了对BASE64的进一步封装。? (参见最后一部分的说明) ?1.?使用BASE64加密:? BASE64Encoder encoder = new BASE64Encoder(); String cipherText = encoder.encode(plainText.getBytes()); ? 2.?使用BASE64解密:? BASE64Decoder decoder = new BASE64Decoder(); plainText = new String(decoder.decodeBuffer(cipherText)); ? 3. 完整代码示例:? /** * 功能简述: 使用BASE64进行双向加密/解密. * @throws Exception */ @Test public void test02() throws Exception { BASE64Encoder encoder = new BASE64Encoder(); BASE64Decoder decoder = new BASE64Decoder(); String plainText = "Hello , world !"; String cipherText = encoder.encode(plainText.getBytes()); System.out.println("cipherText : " + cipherText); //cipherText : SGVsbG8gLCB3b3JsZCAh System.out.println("plainText : " + new String(decoder.decodeBuffer(cipherText))); //plainText : Hello , world ! } ?? <三>. 使用DES对称加密/解密: ? ? ? ? ?数据加密标准算法(Data Encryption Standard),和BASE64最明显的区别就是有一个工作密钥,该密钥既用于加密、也用于解密,并且要求密钥是一个长度至少大于8位的字符串。使用DES加密、解密的核心是确保工作密钥的安全性。 ?1.?根据key生成密钥:? DESKeySpec keySpec = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("des"); SecretKey secretKey = keyFactory.generateSecret(keySpec); ? 2.?加密操作:? Cipher cipher = Cipher.getInstance("des"); cipher.init(Cipher.ENCRYPT_MODE, secretKey, new SecureRandom()); byte[] cipherData = cipher.doFinal(plainText.getBytes()); ? 3.?为了便于观察生成的加密数据,使用BASE64再次加密:? String cipherText = new BASE64Encoder().encode(cipherData); ? ? ?生成密文如下:PtRYi3sp7TOR69UrKEIicA==? ? 4.?解密操作:? cipher.init(Cipher.DECRYPT_MODE, secretKey, new SecureRandom()); byte[] plainData = cipher.doFinal(cipherData); String plainText = new String(plainData); ? 5. 完整的代码demo:? /** * 功能简述: 使用DES对称加密/解密. * @throws Exception */ @Test public void test03() throws Exception { String plainText = "Hello , world !"; String key = "12345678"; //要求key至少长度为8个字符 SecureRandom random = new SecureRandom(); DESKeySpec keySpec = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("des"); SecretKey secretKey = keyFactory.generateSecret(keySpec); Cipher cipher = Cipher.getInstance("des"); cipher.init(Cipher.ENCRYPT_MODE, secretKey, random); byte[] cipherData = cipher.doFinal(plainText.getBytes()); System.out.println("cipherText : " + new BASE64Encoder().encode(cipherData)); //PtRYi3sp7TOR69UrKEIicA== cipher.init(Cipher.DECRYPT_MODE, secretKey, random); byte[] plainData = cipher.doFinal(cipherData); System.out.println("plainText : " + new String(plainData)); //Hello , world ! } ?? <四>. 使用RSA非对称加密/解密: ? ? ? ? RSA算法是非对称加密算法的典型代表,既能加密、又能解密。和对称加密算法比如DES的明显区别在于用于加密、解密的密钥是不同的。使用RSA算法,只要密钥足够长(一般要求1024bit),加密的信息是不能被破解的。用户通过https协议访问服务器时,就是使用非对称加密算法进行数据的加密、解密操作的。 ? ? ? ?服务器发送数据给客户端时使用私钥(private key)进行加密,并且使用加密之后的数据和私钥生成数字签名(digital signature)并发送给客户端。客户端接收到服务器发送的数据会使用公钥(public key)对数据来进行解密,并且根据加密数据和公钥验证数字签名的有效性,防止加密数据在传输过程中被第三方进行了修改。 ? ? ? ?客户端发送数据给服务器时使用公钥进行加密,服务器接收到加密数据之后使用私钥进行解密。 ?1.?创建密钥对KeyPair: KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("rsa"); keyPairGenerator.initialize(1024); //密钥长度推荐为1024位. KeyPair keyPair = keyPairGenerator.generateKeyPair(); ? 2.?获取公钥/私钥: PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); ? 3.?服务器数据使用私钥加密: Cipher cipher = Cipher.getInstance("rsa"); cipher.init(Cipher.ENCRYPT_MODE, privateKey, new SecureRandom()); byte[] cipherData = cipher.doFinal(plainText.getBytes()); ? 4.?用户使用公钥解密: cipher.init(Cipher.DECRYPT_MODE, publicKey, new SecureRandom()); byte[] plainData = cipher.doFinal(cipherData); ? 5.?服务器根据私钥和加密数据生成数字签名: Signature signature = Signature.getInstance("MD5withRSA"); signature.initSign(privateKey); signature.update(cipherData); byte[] signData = signature.sign(); ? 6.?用户根据公钥、加密数据验证数据是否被修改过: signature.initVerify(publicKey); signature.update(cipherData); boolean status = signature.verify(signData); ? 7. RSA算法代码demo:<img src="http://www.cxyclub.cn/Upload/Images/2014081321/99A5FC9C0C628374.gif" alt="尴尬" title="尴尬" border="0"> /** * 功能简述: 使用RSA非对称加密/解密. * @throws Exception */ @Test public void test04() throws Exception { String plainText = "Hello , world !"; KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("rsa"); keyPairGenerator.initialize(1024); KeyPair keyPair = keyPairGenerator.generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); Cipher cipher = Cipher.getInstance("rsa"); SecureRandom random = new SecureRandom(); cipher.init(Cipher.ENCRYPT_MODE, privateKey, random); byte[] cipherData = cipher.doFinal(plainText.getBytes()); System.out.println("cipherText : " + new BASE64Encoder().encode(cipherData)); //gDsJxZM98U2GzHUtUTyZ/Ir/NXqRWKUJkl6olrLYCZHY3RnlF3olkWPZ35Dwz9BMRqaTL3oPuyVq //sehvHExxj9RyrWpIYnYLBSURB1KVUSLMsd/ONFOD0fnJoGtIk+T/+3yybVL8M+RI+HzbE/jdYa/+ //yQ+vHwHqXhuzZ/N8iNg= cipher.init(Cipher.DECRYPT_MODE, publicKey, random); byte[] plainData = cipher.doFinal(cipherData); System.out.println("plainText : " + new String(plainData)); //Hello , world ! Signature signature = Signature.getInstance("MD5withRSA"); signature.initSign(privateKey); signature.update(cipherData); byte[] signData = signature.sign(); System.out.println("signature : " + new BASE64Encoder().encode(signData)); //ADfoeKQn6eEHgLF8ETMXan3TfFO03R5u+cQEWtAQ2lRblLZw1DpzTlJJt1RXjU451I84v3297LhR //co64p6Sq3kVt84wnRsQw5mucZnY+jRZNdXpcbwh2qsh8287NM2hxWqp4OOCf/+vKKXZ3pbJMNT/4 ///t9ewo+KYCWKOgvu5QQ= signature.initVerify(publicKey); signature.update(cipherData); boolean status = signature.verify(signData); System.out.println("status : " + status); //true }

小哇 2019-12-02 01:26:34 0 浏览量 回答数 0

回答

不可能知道,DES、3DES加密完,再base64编码,能可能是你说的这种格式,所以看不出来。######看样子是加密后在用base64编码了的,要知道是什么加密就不清楚了######变换之后再做的base64把,样例太少了######无解…######无解######已私信######base64不是加密方式,是一种编码方式,作用是把数据用可见字符标识,使数据可显示,可还原。######应该是base64加密串不是标准串, 这个要找个机器去破解能就行了。######这个应该是原文变换之后再base64,而且应该是比较简单的变换。###### 样本太少了,如果是客户端的浏览器客户端的加密,一般可以找到密匙。

kun坤 2020-06-08 13:16:01 0 浏览量 回答数 0

回答

密码学简介 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。 随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施 了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提 高,近期又出现了AES、ECC等。 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 二. 加密算法介绍 根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。 对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。 非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。 对称加密算法 对称加密算法用来对敏感数据等信息进行加密,常用的算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。 3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。 AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高; AES 2000年10月,NIST(美国国家标准和技术协会)宣布通过从15种侯选算法中选出的一项新的密匙加密标准。 Rijndael被选中成为将来的AES。 Rijndael是在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的。AES 正日益成为加密各种形式的电子数据的实际标准。 美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。 算法原理 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。 AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16 字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相 同。迭代加密使用一个循环结构,在该循环中重复置换和替换输入数据 AES与3DES的比较 算法名称 算法类型 密钥长度 速度 解密时间(建设机器每秒尝试255个密钥) 资源消耗 AES 对称block密码 128、192、256位 高 1490000亿年 低 3DES 对称feistel密码 112位或168位 低 46亿年 中 非对称算法 常见的非对称加密算法如下: RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的; DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准); ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。 ECC 在1976年,由于对称加密算法已经不能满足需要,Diffie 和Hellman发表了一篇叫《密码学新动向》的文章,介绍了公匙加密的概念,由Rivet、Shamir、Adelman提出了RSA算法。 随着分解大整数方法的进步及完善、计算机速度的提高以及计算机网络的发展,为了保障数据的安全,RSA的密钥需要不断增 加,但是,密钥长度的增加导致了其加解密的速度大为降低,硬件实现也变得越来越难以忍受,这对使用RSA的应用带来了很重的负担,因此需要一种新的算法来 代替RSA。 1985年N.Koblitz和Miller提出将椭圆曲线用于密码算法,根据是有限域上的椭圆曲线上的点群中的离散对数问题ECDLP。ECDLP是比因子分解问题更难的问题,它是指数级的难度。 算法原理——椭圆曲线上的难题 椭圆曲线上离散对数问题ECDLP定义如下:给定素数p和椭圆曲线E,对Q=kP,在已知P,Q 的情况下求出小于p的正整数k。可以证明由k和P计算Q比较容易,而由Q和P计算k则比较困难。 将椭圆曲线中的加法运算与离散对数中的模乘运算相对应,将椭圆曲线中的乘法运算与离散对数中的模幂运算相对应,我们就可以建立基于椭圆曲线的对应的密码体制。 例如,对应Diffie-Hellman公钥系统,我们可以通过如下方式在椭圆曲线上予以实现:在E上选取生成元P,要 求由P产生的群元素足够多,通信双方A和B分别选取a和b,a和b 予以保密,但将aP和bP公开,A和B间通信用的密钥为abP,这是第三者无法得知 的。 对应ELGamal密码系统可以采用如下的方式在椭圆曲线上予以实现: 将明文m嵌入到E上Pm点,选一点B∈E,每一用户都选一整数a,0<a<N,N为阶数已知,a保密,aB公开。欲向A 送m,可送去下面一对数偶:[kB,Pm+k(aAB)],k是随机产生的整数。A可以从kB求得k(aAB)。通过:Pm+k(aAB)- k(aAB)=Pm恢复Pm。同样对应DSA,考虑如下等式: K=kG [其中 K,G为Ep(a,b)上的点,k为小于n(n是点G的阶)的整数] 不难发现,给定k和G,根据加法法则,计算K很容易;但给定K和G,求k就相对困难了。 这就是椭圆曲线加密算法采用的难题。我们把点G称为基点(base point),k(k<n,n为基点G的阶)称为私有密钥(privte key),K称为公开密钥(public key)。 ECC与RSA的比较 ECC和RSA相比,在许多方面都有对绝对的优势,主要体现在以下方面: Ø 抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。 Ø 计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。 Ø 存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。 Ø 带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。 ECC的这些特点使它必将取代RSA,成为通用的公钥加密算法。比如SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。 下面两张表示是RSA和ECC的安全性和速度的比较: 攻破时间 (MIPS年) RSA/DSA (密钥长度) ECC 密钥长度 RSA/ECC 密钥长度比 104 512 106 5:1 108 768 132 6:1 1011 1024 160 7:1 1020 2048 210 10:1 1078 21000 600 35:1 RSA和ECC安全模长得比较 功能 Security Builder 1.2 BSAFE 3.0 163位ECC(ms) 1,023位RSA(ms) 密钥对生成 3.8 4,708.3 签名 2.1(ECNRA) 228.4 3.0(ECDSA) 认证 9.9(ECNRA) 12.7 10.7(ECDSA) Diffie—Hellman密钥交换 7.3 1,654.0 RSA和ECC速度比较 散列算法 散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。加密性强的散列一定是不可逆的,这就意味着通过散列结 果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。散列还应该是防冲突的,即找不出具有 相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。 单向散列函数一般用于产生消息摘要,密钥加密等,常见的有: Ø MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法。 Ø SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值; SHA-1 在1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公布;1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1。SHA-1是基于MD4算法的,并且它的设计在很大程度上是模仿MD4的。现在已成为公认的最安全的散列算法之一,并 被广泛使用。 算法原理 SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。 单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码 的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或 信息摘要的输出。 该算法输入报文的最大长度不超过264位,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。 通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的 明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表 示明文未被改动,如果不一致表示明文已被篡改。 MAC (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码的合法性。MAC的产生参见下图。 输入信息 密码 散列函数 信息认证代码 SHA-1与MD5的比较 因为二者均由MD4导出,SHA-1和MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同: Ø 对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2128数量级的操作,而对SHA-1则是2160数量级的操作。这样,SHA-1对强行攻击有更大的强度。 Ø 对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。 Ø 速度:在相同的硬件上,SHA-1的运行速度比MD5慢。 对称与非对称算法比较 以上综述了两种加密方法的原理,总体来说主要有下面几个方面的不同: Ø 在管理方面:公钥密码算法只需要较少的资源就可以实现目的,在密钥的分配上,两者之间相差一个指数级别(一个是n一个是n2)。所以私钥密码算法不适应广域网的使用,而且更重要的一点是它不支持数字签名。 Ø 在安全方面:由于公钥密码算法基于未解决的数学难题,在破解上几乎不可能。对于私钥密码算法,到了AES虽说从理论来说是不可能破解的,但从计算机的发展角度来看。公钥更具有优越性。 Ø 从速度上来看:AES的软件实现速度已经达到了每秒数兆或数十兆比特。是公钥的100倍,如果用硬件来实现的话这个比值将扩大到1000倍。 三. 加密算法的选择 前面的章节已经介绍了对称解密算法和非对称加密算法,有很多人疑惑:那我们在实际使用的过程中究竟该使用哪一种比较好呢。 我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。 对称加密算法不能实现签名,因此签名只能非对称算法。 由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。 在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。 如果在选定了加密算法后,那采用多少位的密钥呢。一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。 四. 密码学在现代的应用 随着密码学商业应用的普及,公钥密码学受到前所未有的重视。除传统的密码应用系统外,PKI系统以公钥密码技术为主,提供加密、签名、认证、密钥管理、分配等功能。 保密通信:保密通信是密码学产生的动因。使用公私钥密码体制进行保密通信时,信息接收者只有知道对应的密钥才可以解密该信息。 数字签名:数字签名技术可以代替传统的手写签名,而且从安全的角度考虑,数字签名具有很好的防伪造功能。在政府机关、军事领域、商业领域有广泛的应用环境。 秘密共享:秘密共享技术是指将一个秘密信息利用密码技术分拆成n个称为共享因子的信息,分发给n个成员,只有 k(k≤n)个合法成员的共享因子才可以恢复该秘密信息,其中任何一个或m(m≤k)个成员合作都不知道该秘密信息。利用秘密共享技术可以控制任何需要多 个人共同控制的秘密信息、命令等。 认证功能:在公开的信道上进行敏感信息的传输,采用签名技术实现对消息的真实性、完整性进行验证,通过验证公钥证书实现对通信主体的身份验证。 密钥管理:密钥是保密系统中更为脆弱而重要的环节,公钥密码体制是解决密钥管理工作的有力工具;利用公钥密码体制进行密钥协商和产生,保密通信双方不需要事先共享秘密信息;利用公钥密码体制进行密钥分发、保护、密钥托管、密钥恢复等。 基于公钥密码体制可以实现以上通用功能以外,还可以设计实现以下的系统:安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票系统等。 公钥密码体制的产生是密码学由传统的政府、军事等应用领域走向商用、民用的基础,同时互联网、电子商务的发展为密码学的发展开辟了更为广阔的前景。 五. 加密算法的未来 随着计算方法的改进,计算机运行速度的加快,网络的发展,越来越多的算法被破解。 在2004年国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做的破译MD5、HAVAL-128、MD4和RIPEMD算法的报告,令在场的国际顶尖密码学专家都为之震惊,意味着这些算法将从应用中淘汰。随后,SHA-1也被宣告被破解。 历史上有三次对DES有影响的攻击实验。1997年,利用当时各国 7万台计算机,历时96天破解了DES的密钥。1998年,电子边境基金会 (EFF)用25万美元制造的专用计算机,用56小时破解了DES的密钥。1999年,EFF用22小时15分完成了破解工作。因此。曾经有过卓越贡献的 DES也不能满足我们日益增长的需求了。 最近,一组研究人员成功的把一个512位的整数分解因子,宣告了RSA的破解。 我们说数据的安全是相对的,可以说在一定时期一定条件下是安全的,随着硬件和网络的发展,或者是另一个王小云的出现,目前的常用加密算法都有可能在 短时间内被破解,那时我们不得不使用更长的密钥或更加先进的算法,才能保证数据的安全,因此加密算法依然需要不断发展和完善,提供更高的加密安全强度和运 算速度。 纵观这两种算法一个从DES到3DES再到AES,一个从RSA到ECC。其发展角度无不是从密钥的简单性,成本的低廉性,管理的简易性,算法的复 杂性,保密的安全性以及计算的快速性这几个方面去考虑。因此,未来算法的发展也必定是从这几个角度出发的,而且在实际操作中往往把这两种算法结合起来,也 需将来一种集两种算法优点于一身的新型算法将会出现,到那个时候,电子商务的实现必将更加的快捷和安全。

liujae 2019-12-02 01:26:38 0 浏览量 回答数 0

回答

你好!是标准的HID<aclass='referer'target='_blank'>@rockingMan,我们的硬件是:1)未加密数据(原笔迹手写数据)-->2)通过I2C到加密模块-->3)通过USB(HID)传到安卓设备(即与HID建立通信,安卓设备可获取加密模块数据)-->4)安卓设备获取加密数据后的处理(一路在安卓设备上解密后实现签名轨迹的同步显示,另一路保留加密准备给上位机调用)-->5)安卓再通过USBHID连接上位机(PC机,在PC机解密后显示并储存数据和轨迹)。现在只要做上述第三步的任务。谢谢HID硬件端接口信息我们提供可能写的不明白,可以电话了解:18620383898特别提示:我们的HID加密模块是用DES算法,所以开发的这个APK需要遵循DES算法的加密流程,才能与加密模块互动的(涉及操作库的建立、函数接口、密钥创建等)

爱吃鱼的程序员 2020-06-10 14:15:29 0 浏览量 回答数 0

问题

C#语法问答合集

马铭芳 2019-12-01 20:19:13 2476 浏览量 回答数 1

问题

java中如何实现对数据进行3DES的ECB加密

蛮大人123 2019-12-01 19:55:01 1247 浏览量 回答数 1

问题

java加密移动端解密如何做?

蛮大人123 2019-12-01 20:06:34 1295 浏览量 回答数 1

问题

猜测密码加密方式,呵呵报错 

kun坤 2020-06-03 10:09:35 5 浏览量 回答数 1

回答

ReSLB使用ssl加密技术问题 应该不是证书的问题。看我本地nginx,未使用SLB的结果: 本地nginx的ssl配置文件中ssl_ciphers值的问题,SLB没有此配置项。 ------------------------- ReSLB使用ssl加密技术问题 现在就是在SLB上配置的证书,没有在ECS上配置啊 情况就是: 同一个证书, SLB上使用ssl,则显示为过期的加密技术 本地测试情况:   nginx上如果配置ssl_ciphers  HIGH:!aNULL:!MD5; 显示过期的加密技术 配置ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-SHA256:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!DSS:!PKS; 则为新型加密技术

大荒芜 2019-12-02 02:38:43 0 浏览量 回答数 0

回答

利用算法核心代码封装的接口函数笔者编写了一个针对文本文件的加密解密工具.下文叙述了在实践时的一些心得体会,希望能对读者有所裨益. 笔者选择把密文以16进制的形式写入文件的方法.当然也可以直接写入文件. 例: 密文为:12345678 在内存中显示为: 31 32 33 34 35 36 37 38 那么就把以3132333435363738的形式写入文件. 为了解密的方便,密文中的每个字节用两个字节表示,也即在内存中显示为0x9A的内容,就以9A的形式写入文件中.当内存中显示的内容为0x0?(?代表0~F)形式时,需要以0?的形式写入文件. 这样可以避开前面提及的问题,只是在解密时先按照两两组合的原则,顺序把从文件中读取的数据转换成待解的密文. 例: 读出的数据是: 3132333435363738 那么复原的过程: 31->1 32->2 33->3 …. 38->8 最终得真正的密文12345678,这样就可以调用DES算法解密函数从密文得到明文. DES算法是对固定大小(64位)的数据块进行加密解密操作的,对于那些不够64位的数据块需要采用填充机制补位到64位长,为了方便使用,数据位的填充是对用户而言是透明的,利用该工具进行加密解密操作时,用户只需输入操作的类型、读取数据的文件名、写入操作结果的文件名、密钥等信息. 操作思路: #define READFILESIZE 512 步骤: 1.从文件中读取READFILESIZE个字节的数据 2.,如果从文件中读出的数据少于READFILESIZE个,以0补足,然后根据用户指定的类型对这READFILESIZE个字节的数据进行操作. 3.判断文件是否结束,没有则执行步骤1 4.把加密后的文件实际长度添加到密文的末尾 5.结束 采用一次只从文件读取READFILESIZE个字节是在为了防止由于需要加密或解密的文件太大导致内存不够的情况出现. 3.2 注意事项 DES算法的加密密钥是根据用户输入的密码生成的,该算法把64位密码中的第8位、第16位、第24位、第32位、第40位、第48位、第56位、第64位作为奇偶校验位,在计算密钥时要忽略这8位.如果输入的密码只是在这8位上有区别的话,那么操作后的结果将是一样的. 例: 输入的密码为wuzhenll,密钥的16进制表示为77 75 7A 68 65 6E 6C 6C 任意改变这64位数据的奇偶校验位,可以得到16个不同的密码, 把8个奇偶检验位全取反后: w->v u->t z->{ h->i e->d n->o l->m 形成新密码:vt{idomm 表面上新密码和原密码迥然不同,但是由于他们仅在奇偶校验位上有区别,所以用这两个密码进行加密解密操作得到的结果是一样的. 笔者建议使用安全系数较高的多密钥加密解密方案. 此外用户输入的密码的长度不受限制,当输入的密码长度为0时,使用缺省64位密码;当输入的密码长度大于8字节时,输入密码的前8个字节为有效密码. 该工具提供6种不同的操作类型: 1:一层加密; 2:一层解密; 3:N层单密钥加密; 4:N层单密钥解密; 5:N层多密钥加密; 6:N层多密钥解密; 这六种操作是对称使用的,例如:加密明文时选择一层加密,解密时对密文使用一层解密

聚小编 2019-12-02 01:26:22 0 浏览量 回答数 0

问题

value stored to 'XX' is never read 要怎么改

杨冬芳 2019-12-01 20:14:49 914 浏览量 回答数 1

回答

只是加密方式不一样而已,3des需要自己写一些自定义函数来处理。 网上可以找到很多现成的方法。 百度 php 3des加密,我找到了一大堆。 https://www.baidu.com/s?wd=php%203des%E5%8A%A0%E5%AF%86&rsv_spt=1&rsv_iqid=0x9510baa000001629&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=6&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&prefixsug=php%2520%2526lt%253Bdes&rsp=0&inputT=2501&rsv_sug4=3447 “答案来源于网络,供您参考” 希望以上信息可以帮到您!

牧明 2019-12-02 02:17:52 0 浏览量 回答数 0

问题

懂php和java的进来,求教一个问题 报错

因为相信,所以看见。 2020-05-26 13:57:04 9 浏览量 回答数 1

问题

java 后端加密 前段解密和后端解密结果不一样报错

因为相信,所以看见。 2020-05-27 12:59:59 3 浏览量 回答数 1

回答

DES算法全称为Data Encryption Standard,即数据加密算法,它是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步: 1?初始置换 其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。 2?逆置换 经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。 RSA算法简介 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理论上的证明。 RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数( 大于 100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。 密钥对的产生。选择两个大素数,p 和q 。计算: n = p * q 然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互质。最后,利用Euclid 算法计算解密密钥d, 满足 e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ) 其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。 加密信息 m(二进制表示)时,首先把m分成等长数据块 m1 ,m2,..., mi ,块长s,其中 2^s <= n, s 尽可能的大。对应的密文是: ci = mi^e ( mod n ) ( a ) 解密时作如下计算: mi = ci^d ( mod n ) ( b ) RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。具体操作时考虑到安全性和 m信息量较大等因素,一般是先作 HASH 运算。 RSA 的安全性。 RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解140多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。 RSA的速度。 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。 RSA的选择密文攻击。 RSA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构: ( XM )^d = X^d *M^d mod n 前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方法

云篆 2019-12-02 01:26:50 0 浏览量 回答数 0

回答

加密解密的技术: 对称加密 加密方和解密方使用是同一个密钥,加密解密的速度都很快,先将数据明文 分成数据块儿,一般来讲是大小相同的,如果到最后剩下的不能与其他数据块儿的 大小相同,那么就给它添加一些填充物,然后对每个数据块儿逐个加密, 然后把加密后的数据块儿发给对方,每一次管理一块儿, 但是,加密后的块儿怎么处理,因为每一个块儿都是单独处理,对方在破解数据时 每一块儿独立破解,也就是说这样的加密过程对反破解并没有任何帮助, 对于加密以后的数据块儿的处理有以下两种方法 ECB:每一块儿单独加密,加密一个传递一个, CBC:加密或密文块儿链,通过抑或运算实现,每一个数据块儿,在发送给对方 之前会实现将此数据块儿与此前的数据块儿做一次抑或运算,并把结果发送给对方 所以得不到第一个块儿,得到其他也就没有用,即使是第一块,也会和一个随机数 进行抑或运算 其最大好处在于,做两次抑或运算后可以将数据还原 算法:DES:数据加密标准,使用56位的密钥长度 AES:高级加密标准,可以使用128、192、256三种长度的密钥 3DES:对原有加密3次, Blowfish Twofish RC6 IDEA CAST5 缺陷:1、一个人跟众多对象通信的时候需要记的密码过多 2、密钥分发困难,是最大的难题,没有一种可靠的手段将密钥送给一个 没有见过面的对象 非对称加密 公钥加密算法:DSA,RSA,EIGamal 加密方和解密方使用不同的密钥 功能:加密解密 用户的身份认证,RSA两者都可以实现,而DSA只能加密数据 公钥,私钥 公钥是从私钥中抽出的一段特征,公钥隐含在私钥中 现在主流的密钥长度是2048 缺陷:1、加密速度慢,比对称加密慢3个数量级 1000倍,一个数量级10倍 2、公钥加密一般不用于加密数据,主要用于实现用户认证,数据加密 主要是通过对称加密实现的 如何实现用户认证: 现在假设,有两个通信的对象,一个较小黑,一个较小白,现在小黑给小白发了 一封电子邮件,但是,小白在接受邮件的时候不希望自己的邮件的内容被篡改, 这时小黑就将邮件内容加密且说自己是小黑,并产生一个公钥和一个私钥, 私钥小黑会随身携带 而且不能外泄,公钥则连同邮件一起发给小白,这是小白拿着小黑的公钥如果能够 解密,则说明小黑就是小黑...这就实现了认证,但是如果小黑加密的数据很大,再加上 公钥加密要用很久时间,等加密好,小黑也无语了,所以小黑加密的不是数据 而是这段数据的特征值,说到特征值,下面就说一下单向加密》》》 单向加密 雪崩效应:输入的数据有一点点不同,结果会有巨大不同,主要目的在防暴力破解 单向加密就是去计算一段数据的特征值,加密过程是不可逆的,是去计算一段数据的特征码,是独一无二的,用于对 数据完整性的校验 无论你输入的数据是多长,输出的结果都是一样长度 MD5:message digest,输出结果固定长度128bit SHA1:secure hash algorithm安全的哈希算法,输出结果固定长度160bit 身份认证: 单向加密在实现用户身份认证的时候不会去加密整段数据,而是先去计算这段数据的特征值, 把它的特征值用私钥加密,加密以后附着在数据后面,一起发给对方,在对方收到以后,对方 可以验证两方面的内容,第一用户的身份,第二数据的完整性,接收方先用发送方的公钥对其解密 如果能解密就验证了对方了身份,此时接收方会获得这段数据的特征值,然后接收方也用相同的 算法进行运算,得到一个数据的特征值,如果这两个特征值相同,则说明数据在发送过程完好无损 如果不相同,则说明数据有改动 假设还是小黑和小白通信,双方都希望在数据的发送过程中,既能实现用户身份验证, 又能实现数据加密,还能实现数据的完整性,那该怎么办呢。 现在小黑在发送数据前,先将数据用单向加密,计算出特征值,然后再用私钥解密将特征值加密 接下来会再用产生一个一次性的密码,用小白的公钥将这个密码加密然后放在数据后,最后再用对称加密 将全部加密,这时就是密文了,到了小白那里以后,小白先用自己的私钥拿到那个密码,然后再用那个 密码解密,获得数据的特征值,然后再用单向解密计算出一个特征值,如果这两个值相同,则说明 数据完好,以上过程就实现了三重验证 这三项结合起来是现在电子商务的基础。 可以实现这整个过的工具: opssh gpg 但是这两个过程还存在问题,小白怎样去获得小黑的公钥呢。在传输公钥的时候也有可能 出现欺骗,这怎么解决了。 IKE:互联网密钥交换,实现双方使眼色交换密钥,和密钥本身不在互联网上 传播 PKI:公钥基础设施,或公钥基础架构,CA证书颁发机构,证书内放的就是通信人的公钥信息 怎样基于证书通信: 双方在通信时都出示证件,这个证件由某个权威机构发放,只要验证证件内的有效信息 就可以验证对方的身份,但是在发证的时候怎样防止中间出现欺骗呢。 这又是一个鸡生蛋,蛋生鸡的问题,想想该如何解决呢。 所以一些操作系统在安装时就已经将一些权威的发证机构的证书放在你的电脑里了,这样在一定程度 上可以解决一些问题 证书的格式:X509,PKCS 证书废弃列表:CRL 最常见的攻击“man in the middle”主要是双方身份无法验证 会话劫持, 数据插入, 数据篡改, 这些都是常见的威胁 加密解密用于: 1、用户密码/数据嗅探 password/data sniffing 2、数据操纵,data manipulation 3、authentication manipulation 认证 4、equivalent to mailing on postcards 这几个方面 加密算法的基本法则:kerckhoff's principle 1、一般来讲加密本身并不靠算法,算法固然很关键能将明文变成密文 但是一项真正的加密过程,你的数据是否会被破解,主要不能过强依赖于算法本身, 而要依赖于密码,算法的研究周期很长,更改一个密码很简单,但是更换一个算法就麻烦了 算法需要耗费很多精力,只要算法不公开,就无从下手破解 2、电子商务的过程中不仅要保证数据加密,还要保证不被别人看见 算法: 1、随机数来源靠得住

行者武松 2019-12-02 01:26:47 0 浏览量 回答数 0

回答

看代码了。不要太高估码农的智商了。比如如果是PHP开源软件,基本都是MD5揉来揉去,如果是.NET开源软件,基本都是DES揉来揉去。 99%的加密就是base64,md5,rc4,des3等揉来揉去,其中90%的加密是MD5散列做的,就是加一点切一点。 ######回复 @blu10ph : 你说的没错。但是,绝大部分开源软件的作者水平没这么高,尤其是业务软件,就是我说的拿几个最简单最常见的揉来揉去,加点盐,掐头去尾什么的。你以为他们懂什么椭圆双曲线加密,什么SHA3最新一代散列?######加密还分可逆和不可逆,对称不对称######老大果然是老大,”揉“用得非常之精妙。###### md5 ###### 你没有把明文贴出来,谁能猜得到? ######根据你的要求,提供了4对明文密文,呵呵######一定不是MD5###### 你这个密文长度都不固定,怎么确定呀。反正肯定不是MD5,好像也不是DES。或者有两种加密算法。因为第四段密文长度和其他不一样。 ######长度问题,你可能想复杂了######呵呵,楼主就少换了个行,你们就以为有一行长度不一致?看上去离MD5不远,至少最后一步是MD5的16位加密。######那一行长的 确实就是那么长啊###### md5 ######呵呵,说的对哦 我补充了几组明文密文组 能帮我看看算法吗?######回复 @婕仪伟琪 : 这个网站确实能通过密文反查到MD5等加密数据。我用过几次。你可以去看看.www.cmd5.com。并且从这个网站你可以看到,光摘要算法,就有十几二十种,更不用说对称,非对称算法了。而且,比如对称算法,只要明文不同,即使密钥相同,算出来的密文也完全不同。加密解密有三要素(明文,密钥,算法),才能算出密文,你只给出一串无意义的密文,神仙也推不出算法或者明文来。######MD5###### ######所以你不给出一条明文或密钥,根本不能判断是什么算法加密出来的。######在原问题上补充了4对明文密文,呵呵

kun坤 2020-06-03 14:04:23 0 浏览量 回答数 0

回答

###l 用C语言实现了很多种常见的加密算法: 三个组件: 1、libcrypto 库文件 专门实现加密解密的库文件, 2、libssl 库文件,主要是实现https这样协议 3、openssl 多用途加密工具,还可以制作一个CA出来 一般来讲openssl都会装上,使用一个openssl加一个错误的选项就能看见它的使用 选项 单项加密时的用法: openssl enc -des3 -salt -a -in inittab -out inittab.des3 实现对于一个文件加密 enc是加密 -des3是加密算法 -salt 加入杂质 -in后面跟文件名 -out加密后放在哪个文件里 openssl enc -d -des3 -salt -a -in inittab.des3 -out inittab -d表示解密 openssl dgst -sha inittab 表示计算inittab文件的特征值 用户认证时passwd的用法,怎么去帮你生成一个类似于保存在/etc/shadow文件里的密码一样 openssl passwd -1 -1表示使用MD5算法 [root@server46 ~]# openssl passwd -1 Password: Verifying - Password: $1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1 openssl passwd -1 -salt 杂质 这样计算结果就一样了 [root@server46 ~]# openssl passwd -1 Password: Verifying - Password: $1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1 [root@server46 ~]# openssl passwd -1 -salt 7HW0kv8y Password: $1$7HW0kv8y$IntkyNppqtTQ2fHAJ1FMk1 man sslpasswd可以查看用法 非对称加密: openssl怎样发证: 切换目录到/etc/pki/tls/certs make *.key就可以产生一个密钥 make *.cert可以生成一个证书,主要是看文件后缀生成文件,是redhat提供的便捷方式 make my.key就可以生成一个密钥 (umask 66;openssl genrsa 1024 > my.key) 生成私钥文件 这是在一个子shell里进行,umask只对后面的这一个命令有效,umask执行完以后就恢复到原来 提取公钥: openssl rsa -in my.key -pubout -out myr.pubkey [root@server46 certs]# (umask 66; openssl genrsa 1024 > my.key) Generating RSA private key, 1024 bit long modulus ...++++++ ........++++++ e is 65537 (0x10001) [root@server46 certs]# cat my.key -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDRSlvZZ7p7sRbczdGhcw/8z5mzEKIjDZw63ffsxCDC9XWKO0vE FaxbPrgwZYF+iu8QHUKVzuJoqO8MmfY7p9aGz2WT2GQ/wUTnjsbL8mNbSclV/2m8 K0XZqSLsKzuhaBOFC+sylQvnZiXP23slNWZIuV0EVh9k2ULSV4f8B5QtywIDAQAB AoGATNkA4NM1pjVgL7NjReT5+dpAlX+GCVj2BKd8YXOik/ONNTSQnW9X2ikteJfM 9KoPHdugl2FfwQ5GuFnQEBeQrUV5SnR09k2OZTsdOMVNXqamf4V/rXidOs+L3RVK Q4X6vpasS1CJ1/q/fCcsi1Nl0nLcV9stLXbmEzYqE6+hwAECQQDqxrbF5W9j5vVM ZkKmvx1ViojwTJovlkOtl6RSkqHMR3msnHhizbc+iGrGiP/vH9H+AvDK7AJPNVng kHAa5YGbAkEA5DXX0dIajPoAdLvmNG1kNY1fp6IJjfR8UJRWeOwjhVjul1yp47hP bM/f55OmowdsQamfNVwk4P5iYIcZ8uwfkQJBAJoXToLYsaF6Rumb/IcAzLoGMRa2 0EQHdegLrVhc0UEIcH2wPPtsVab/VkV0SbaixerX9z7YZDOkqpbPdiTRGZ0CQBWv 2DakVMmY6HovcQ0CaEd+i9yOVYIb/cRalG0hY67EaMgRkkOFvGaGyqxjJ67Ogccr q2mSvB51jjvGGv0u20ECQQCHvgJkF3xHkQnahqCTTgym0CNocHhVfyo6KveIfBAk Vz69+zsGK2kKBOseSbgRKqVmM21Iqu0aZatjEevHwZIo -----END RSA PRIVATE KEY----- [root@server46 certs]# openssl rsa -in my.key -pubout -out my.pubkey writing RSA key [root@server46 certs]# cat my.pubkey -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRSlvZZ7p7sRbczdGhcw/8z5mz EKIjDZw63ffsxCDC9XWKO0vEFaxbPrgwZYF+iu8QHUKVzuJoqO8MmfY7p9aGz2WT 2GQ/wUTnjsbL8mNbSclV/2m8K0XZqSLsKzuhaBOFC+sylQvnZiXP23slNWZIuV0E Vh9k2ULSV4f8B5QtywIDAQAB -----END PUBLIC KEY----- 发证步骤: 1、首先生成一对密钥(S/P密钥) 2、然后把公钥放在一个叫证书颁发请求里(里面包括你的公钥,姓名,地址,等一些列描述信息) 发送到证书颁发机构 3、CRT证书就生成了 自己成为CA: 1、cd /etc/pki/CA 有一个 private 文件,里面专门放CA的私钥文件 2、给自己生成一个密钥 (umask 66; openssl genrsa 2048 > private/cakey.pem[这里只能叫cakey.pem]) ll private 给自己发证书: openssl req -new -x509 -key private/cake.pem -out cacert.pem openssl req -new -x509 -key private/cake.pem -out cacert.pem 接下来会提示你输入一些信息 写完之后就是一个自签的证书 接下来就可以给别人发证了 view plaincopy to clipboardprint? openssl req -new -x509 -key private/cake.pem -out cacert.pem -days3655 openssl req -new -x509 -key private/cake.pem -out cacert.pem -days3655 3、编辑cA的配置文件 view plaincopy to clipboardprint? vim /etc/pki/tls/openssl.cnf这里定义了 vim /etc/pki/tls/openssl.cnf这里定义了 找到【 CA_default 】字段 修改 dir 改为绝对路径 这里有些目录没有需要我们手动建立,在这个配置文件内我们都能找到 然后还可以修改默认信息 到这里才 算是一个完整的CA 4、接下来给web服务器做一个证书: view plaincopy to clipboardprint? cd /etc/httpd mkdir ssl cd ssl (umask 66;openssl genrsa 2048 > web.key) cd /etc/pki/CA mkdir certs crl newcerts touch index.txt serial echo 01 > serial openssl req -new -key wed.key -out wed.csr 这是一个证书颁发请求 opssl ca -in wed.csr -out web.crt 颁发证书 cd /etc/httpd mkdir ssl cd ssl (umask 66;openssl genrsa 2048 > web.key) cd /etc/pki/CA mkdir certs crl newcerts touch index.txt serial echo 01 > serial openssl req -new -key wed.key -out wed.csr 这是一个证书颁发请求 opssl ca -in wed.csr -out web.crt 颁发证书 然后敲两次回车 就ok了

小哇 2019-12-02 01:26:47 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站