`
ideage
  • 浏览: 326134 次
社区版块
存档分类
最新评论

关于加密解密备忘

阅读更多
在数据传输中,同一定遇到Unicode一样,你一定会遇到加密问题.下面说说我的理解.

一.对称算法,非对称算法.

有加密就有解密,解密和解密都要用到一个或多个密码,俗称密钥.密钥一致的就是对称算法,而不一致的就是非对称算法.非对称如同你在一个门上放了两把锁一样,钥匙不同,也可以解锁.对称,就是一把钥匙开一把锁(当然例子也不太准确).

二.常用的对称算法

3DES,TEA等都是常用的算法.对称算法速度都很快.而TEA小巧高效,实现容易.TEA是Tiny Encrypt Arithmetic的缩写.顾名思义就是一种比较简单的小型加密算法.它用一个16字节的密钥去加密一个8字节的明文.得到一个8字节的密文.也可以反向从密文解密出明文,网络上有很多实现代码.据说,QQ聊天信息就使用了TEA.


三.RSA非对称算法.

找到一个非对称算法太不容易了,RSA公开密钥密码系统是由R.Rivest,A.Shamir,L.Adleman提出的,不仅仅可用于数据的加密,也可用于数字签名,其算法如下:

1、取两个相近的大素数p、q;
2、计算n=p*q,z=(p-1)*(q-1);
3、任取一个与z互素的整数e;
4、计算满足e*d=1 mod z 的整数d;
5、将明文m分成字符块s加密,每个块s小于n。现设明文m小于n,加密后形成密文c。
加密、解密过程如下:           
   加密:c=m^e mod n
   解密:m=c^d mod n
6、(n,e)和(n,d)分别称为“公开密钥”和“秘密密钥”。根据Euler定理可得:
          m=c^d mod n=(m^e mod n)^d mod n=m

实际上,公开密钥和秘密密钥是相对的.你可以公开任何一个,而秘密另外一个.要使用RSA,关键是大数算法.RSA被破解的难度就是大数运算.当然,网络上也有很多代码.


RSA,DES可以实用windows系统提供的wincrypt.h中的函数.Microsoft CryptoAPI使用了一个密钥库,可以实现HASH,数字签名.具体模型可以参考MSDN.

后记:
通过我的使用,发现TEA实现容易,RSA要通过大数算法,而D中的大数算法都是别人写的,看了两个,都不好用.只好抄别人的C代码了.而Microsoft CryptoAPI值得研究.

附上D的大数运算代码(都不好用).

也发现D2有了个大数运算的库实现.没有测试,貌似编译期运算.
分享到:
评论

相关推荐

    Secret 2.0 单机加密的备忘录

    Secret 2.0 提供的加密功能使得用户可以将文本存储在加密状态下,只有拥有正确密钥的人才能解密并访问这些信息。这种技术基于强大的加密算法,如AES(高级加密标准)或其他公认可信赖的算法,确保即使数据被窃取,也...

    hivecrypt:一个用于Hive备忘录加密和解密的小型JavaScript模块

    蜂巢用于Hive备忘录加密和解密的小型JavaScript模块。 适应了从未合并到。 使用实施,使其与所有JavaScript环境(包括Electron JS应用程序)兼容。为什么创建这个? 我需要一种在Electron应用程序中使用Hive发布密钥...

    VC++设计音频、视频播放器 VC++设计图片浏览器 VC++设计文件加密 VC++设计备忘记事

    开发者需要理解加密和解密的基本原理,以及如何安全地管理密钥。 最后,备忘记事功能可能涉及到数据库存储、日历同步、提醒服务等。VC++可以通过ODBC(Open Database Connectivity)或ADO.NET来连接和操作数据库,...

    密码备忘录代码实现

    以下是关于这个主题的一些详细知识点: 1. **密码管理器**:密码管理器是用于存储、生成和管理复杂密码的应用程序,以提高网络安全。它们通常具有加密功能,确保即使数据被窃取,攻击者也无法解密密码。 2. **数据...

    密码备忘录源码

    通常,这类应用会使用强大的加密算法,如AES(高级加密标准),来对存储的密码进行加密,确保即使数据被盗,也无法轻易解密。此外,软件可能还包含一些安全特性,比如多重身份验证、随机生成密码、定期提醒更换密码...

    C++加密源码

    (1)皮肤库的使用(2)播放flash(3)实现窗体透明控件不透明(4)备忘录功能的逻辑与算法(5)加密功能 该加密功能 自己创作,加密解密 只对于本程序识别, 在操作文件做标记,标记内容密码跟原文内容加密码不一样...

    密码备忘录源码 实用的小工具

    这种加密方式确保即使数据被窃取,如果没有正确的密钥,也无法解密信息。此外,良好的密码备忘录还会采用盐值哈希技术来增强密码的安全性,防止彩虹表攻击。 其次,用户界面设计是密码备忘录的另一个关键方面。它...

    2024高安全个人密码本程序源码 可生成随机密码/备忘录/二代密码

    该程序采用了先进的加密技术,如对称加密和非对称加密的结合,确保即使数据被截取,也无法轻易解密。同时,它还支持使用强密码策略,强制用户设置复杂度高的主密码,进一步增强防护层。 其次,随机密码生成功能是该...

    备忘录模式(Memento) 注册时用的

    在实际编程中,为了保护用户的隐私和数据安全,通常会使用加密技术来保护备忘录中的敏感信息,并确保只有合法的Originator对象才能解密并访问这些信息。同时,为了防止内存泄漏,可能需要使用智能指针或垃圾回收机制...

    备忘1

    如果“ecry”是加密过的压缩文件,那么可能涉及到了文件加密和解密的技术,这可能与数据安全、隐私保护或备份恢复等话题相关。如果这个文件包含了源代码,那么可能是一个项目代码库的备份,或者是一个演示特定功能的...

    基于VB的工作备忘录系统设计与代码实现

    4. 密码保护:VB提供加密和解密功能,可以将密码进行哈希处理并存储,登录时进行验证。同时,可以使用Form的ShowInTaskbar属性控制窗口是否显示在任务栏,增强隐私性。 三、开发流程 1. 需求分析:明确系统功能,...

    poly-crypto:使用AES-256 GCM加密和解密数据; 可与Node和PHP 7.1+互操作

    备忘单 部分 节点JS PHP PolyAES.withKey(key).encrypt(data) PolyAES :: withKey($ key)-> encrypt($ data) PolyAES.withKey(key).decrypt(encrypted) PolyAES :: withKey($ key)-> decrypt($ ...

    Ciphertext-Policy Attribute-Based Encryption

    密文策略属性基加密(Ciphertext-Policy Attribute-Based Encryption, CP-ABE)是一种加密技术,允许数据拥有者指定解密数据所需的属性集合。与传统的公钥加密相比,CP-ABE为实现细粒度访问控制提供了更强大的工具,...

    Java核心技术介绍-java核心技术讲解word格式可编辑.docx

    以上内容涵盖了Java核心技术的重要方面,包括网络编程、线程管理、设计模式、IO流、数字格式化、加密解密和正则表达式等。这些技术是Java开发人员必须掌握的关键技能,对于构建高质量的Java应用程序至关重要。

    备忘单-上帝:渗透测试参考库-OSCP PTP&PTX备忘单

    4. **密码学**:包括密码破解、哈希破解、加密解密技术的基础知识。 5. **社会工程学**:介绍如何通过欺骗、钓鱼等方式获取敏感信息。 6. **漏洞利用**:详述各种漏洞的利用方式,包括编写exploit代码。 7. **后...

    密码备忘录源码-易语言

    源码中可能会使用加密算法(如AES,DES等)对用户密码进行加密存储,确保即使数据被窃取,也无法轻易解密。学习这部分内容有助于了解如何在易语言中实现数据安全。 3. **用户界面设计**:密码备忘录通常会有友好的...

    易语言超炫传说记事本

    《易语言超炫传说记事本》是一款基于易语言开发的特色文本编辑工具,它集成了许多实用功能,如备忘录提醒、数据管理和个性化皮肤等。本文将深入解析这款记事本的亮点和相关技术知识。 首先,易语言是中国本土开发的...

    ASP.NET开发典型模块大全(C#)23到26章源码

     29.1.4 命令行工具aspnet_regiis.exe实现加密与解密 636  29.2 图文验证技术 638  29.2.1 图文验证技术概述 638  29.2.2 纯数字验证码 638  29.2.3 字母与数字混合验证码 640  29.2.4 纯汉字...

    Java核心技术介绍.doc

    7. **加密解密**: - **DES(Data Encryption Standard)**:是一种对称加密算法,Java中通过`javax.crypto`包提供支持。 - 示例代码展示了如何使用DES进行加解密,通常需要指定密钥和初始化向量(IV)。 这些是...

Global site tag (gtag.js) - Google Analytics