对于字符串的加密解密,可以给String类扩展方法,方便使用
Swift中使用3DES/sha1/MD5加密解密算法 必须要引入这个库 - 在桥接文件中
#import CommonCrypto/CommonCrypto.h
3DES的加密是可逆的, sha1和MD5的是不可逆的
使用方法:
直接在xib界面拖一个textFiled的控件,然后放置3个按钮,分别是进行MD5、sha1、3DES加密点击方法,然后分别测试加密解密数据
可以参考文章
使用这个第三方来实现 JKEncrypt
** 。**
maven依赖(jdk8对应版本5 而jdk7对应版本4)
栗子:(Convert)
DateUtil: 日期时间工具类,定义了一些常用的日期时间操作方法。
StrUtil:字符串工具类,定义了一些常用的字符串操作方法。
ClassPathResource:获取classPath下的文件,在Tomcat等容器下,classPath一般是WEB-INF/classes。
NumberUtil :数字处理工具类,可用于各种类型数字的加减乘除操作及判断类型。
BeanUtil:JavaBean的工具类,可用于Map与JavaBean对象的互相转换以及对象属性的拷贝。
CollUtil:集合操作的工具类,定义了一些常用的集合操作。
MapUtil:Map操作工具类,可用于创建Map对象及判断Map是否为空。
AnnotationUtil:注解工具类,可用于获取注解与注解中指定的值。
SecureUtil:加密解密工具类,可用于MD5加密。
CaptchaUtil:验证码工具类,可用于生成图形验证码。
Hutool中的工具类很多,可以参考:
若是商业加密软件进行的加密,只能通过暴力破解,也就是穷举或者猜测密码进行试验,别无他法。若是不知道用何种软件加密,则根本就无从着手。
下面是对文件 123.txt 加密成txt文件的例子。加密后全部用可见字符显示。
加密前的内容为:123.txt
使用密码 123456 加密后的内容为:04066113.txt
具体内容复制在下面:
lJREL=%@46j*)i/3l:^Rf0"(!E!!!}sb5:?E{Au5Pg5aU(*!:PgWW@57FE%3$jH%q\?I_'R^?tNL,TT6L6OYK.2
这只是一个业余程序员编写的软件,加密内容包括了:文件名,文档修改时间,文件内容。以txt文件形式加密记录了上述这些内容。在不知道密码的情况下,也几乎无法破解。
下图是程序界面:
Type7混淆加密过程,即从一个有26个ASCII字符表中,产生一个种子值(Seed Value)(0-52之间)随机抽取一个用来和明文密码的第一个字符异或,产生的结果用16进制表示,放在加密后字符串的第2、3位,然后种子值+1,再去抽取一个用来和明文密码第二个字符异或,16进制结果放在随后的位置位……。
26字符表如下:
0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f,
0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72,
0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44, 0x48, 0x53, 0x55, 0x42
用ASCII形式表示如下:
dsfd;kfoA,.iyewrkldJKDHSUBsgvca69834ncxv9873254k;fg87
如:随机产生一个0-52之间的数字,如seed=2,即为0x66。假设密码为lala。那么我们先把种子值分解成一个两位数,即0*10+2 = 2,就产生了密码的前两位,02,接着,我们用0x66和"l"的ascii形式0x6C进行异或,即0x66 ^ 0x6C = 0x0A。放在密码的随后两位,得到020A。然后种子值++,得到0x64,再与第二个明文密码字符异或,得到结果放在020A的后面。依次类推即得到密文。因此第一次取得的种子值不一样,最后得到的结果基本也不一样,如果种子值超过了52,那么将回滚到0,也即种子值 %= 53。
Type7混淆解密过程就是加密的反向,先取得初始种子值,也就是密文的前两位。如0623……,种子值就等于0*10+6 = 6 ,从表中取出字符,和0x23异或即得到原文第一个字符。也很简单,此处不在赘述。
工具链接:
楼主是想在WEB.CONFIG文件中加密数据库联接字符串吧?
web.config中加密连接字符串
旧版本的ASP.NET将连接字符串直接保存在ASPX页面中。回想一下,连接字符串包含了数据服务器名称和用户账户等信息,有时候甚至还包含了密码。在代码中包含以上信息是非常不好的习惯,原因有二。首先,这些信息可以被设计小组中的每一位程序人员看到(但是站点访问者不能在浏览器上看到)。第二,在整个Web站点中的每一个拥有该连接的地方,都必须进行维护和更新。更新密码成为了一项繁重的工作。
ASP.NET 2.0提供了一个选项可以将连接字符串移动至Web.config文件的连接区域,给字符串一个名称并将其加密。然后ASP.NET 2.0页面就通过这个名称来引用连接字符串。保存连接字符串至Web.config的步骤并不复杂。打开位于站点根目录下的Web.config文件。找到被connectionString界定的区域(如果不存在,可自行添加)并在Add标记中输入如下代码。该标记有三个属性:name、connectionString和providerName。属性name就是将会在页面中使用的连接字符串的普通名称。connectionString属性应当设置为连接至数据库的完整的连接字符串,如前所述。
e.g.
?xml version="1.0"?
configuration xmlns=""
connectionStrings
add name="SQLProfileConnString" connectionString="server=FOX;database=MSPetShop4Profile;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
providerName="System.Data.SqlClient" /
add name="SQLMembershipConnString" connectionString="server=FOX;database=MSPetShop4Services;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
providerName="System.Data.SqlClient" /
add name="SQLConnString1" connectionString="server=FOX;database=MSPetShop4;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
providerName="System.Data.SqlClient" /
add name="SQLConnString2" connectionString="server=FOX;database=MSPetShop4;user id=mspetshop;password=pass@word1;max pool size=4;min pool size=4;"
providerName="System.Data.SqlClient" /
add name="SQLConnString3" connectionString="server=FOX;database=MSPetShop4Orders;user id=mspetshop;password=pass@word1;min pool size=4;max pool size=4;"
providerName="System.Data.SqlClient" /
add name="OraProfileConnString" connectionString="" providerName="System.Data.OracleClient" /
add name="OraMembershipConnString" connectionString="" providerName="System.Data.OracleClient" /
add name="OraConnString1" connectionString="" providerName="System.Data.OracleClient" /
add name="OraConnString2" connectionString="" providerName="System.Data.OracleClient" /
add name="OraConnString3" connectionString="" providerName="System.Data.OracleClient" /
/connectionStrings
appSettings
!-- Pet Shop DAL configuration settings. Possible values: PetShop.SQLServerDAL for SqlServer, PetShop.OracleServerDALfor Oracle. --
/appSettings
/configuration
通过使用命令,可以将Web.config文件的连接字符串区域加密。当ASPX页面请求连接字符串时,将由ASP.NET自动对信息进行解密。加密必须由以下命令行来执行。依次单击Start/Run/cmd并切换至C:\WINDOWS\ Microsoft.net\ Framework\ v2.0.xxxx,其中xxxx是您的软件版本。如果C:\Websites\BegAspNet2Db是站点根目录的话,即可输入如下命令行:
aspnet_regiis –pef connectionStrings C:\Websites\BegAspNet2Db
加密连接字符串的命令行工具还可以使用虚拟路径语法(在IIS元数据库中的路径),而无需指定Web.config文件的完全限定路径,如下所示:
aspnet_regiis –pe connectionStrings –app /BegAspNet2Db
一旦执行完了加密过程,就可以打开Web.config文件,但是连接字符串已经被混淆。当ASP.NET需要,连接字符串即可自动解密,或者如果需要进行一些更改,例如修改密码,则可以手动输入以下代码来解密。
aspnet_regiis –pdf connectionStrings c:\Websites\BegAspNet2Db
请注意,在默认情况下,加密过程使用了一个基于加密算法执行的机器的键。解密过程(无论手动还是在处理页面过程中)必须发生在与加密相同的机器上。例如,作为XCOPY部署的一部分,移动Web.config至另外一台机器将会导致Web.config无法解密,所以推荐在部署Web站点至最终机器之后,再将连接字符串进行加密。
PS:petshop4.0安装的时候如果选择 “Full Install”,那么配置文件默认就加密了,这也是我一开始怎么也找不到连接字符串,然后用windows集成验证怎么也登不上去的原因。
后来发现在安装目录下有两个批处理文件:
1、加密EncryptWebConfig.bat
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pef "connectionStrings" "D:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE
2、解密DecryptWebConfig.bat
@echo off
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -pdf "connectionStrings" "D:\Program Files\Microsoft\.NET Pet Shop 4.0\Web"
PAUSE
加黑的就是两个文件的区别。
MD5加密是不能逆运算的,现在的破解大都是穷尽法,就是有一个庞大的MD5码对照表放在那里,然后一个一个去对照着查。
MD5是一种不可逆的加密算法,
什么是不可逆呢?就是加了密后,就不能解了。
现在网上的诸多所谓的“MD5解密工具”其实都是暴力破解,什么叫暴力破解呢?
那就是这些软件都有一些“字典文件”,其实就是一些常用的字符串及其加密过后的md5密文,例:软件首先把a加密成md5密文,然后用密文和现在要破解的密文进行比较,如果相同,那当然就破解了是a,如果不同,那么依此继续将b,c...作同样的处理,也就是说,这些破解工具完全是用猜的,a不行猜b,b不行猜c,用循环一直往下猜。所以你想要找一个md5解密的软件,我劝楼主还是省了这份心吧,因为这些软件破解成功的机率很小。