2004-9-24 18:14
seven
使用db2数据库加密函数encrypt,decrypt_char实现<br />例:<br /><!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->1. <br />C:\>db2 create table encode_demo(col1 varchar(100) for bit data) <span style='color:red'>//字段col1数据按二进制存放</span><br />DB20000I &nbsp;SQL 命令成功完成。<br /><br />2. <br />C:\>db2 set encryption password = 'loveunix' &nbsp; <span style='color:red'>//设置加密解密的passwd</span><br />DB20000I &nbsp;SQL 命令成功完成。<br /><br />3.<br />C:\>db2 values(encrypt('loveunix')) <span style='color:red'>//先预览一下加密后的loveunix <!--emo&:)--><img src='style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--></span><br /><br />1<br />---------------------------------------------------<br />x'08BC44FF6A05A3D5240E86CFB2CE60F243AA83C41B7221D7'<br /><br />4.<br />C:\>db2 insert into encode_demo values(encrypt('loveunix')) <span style='color:red'>//插记录</span><br />DB20000I &nbsp;SQL 命令成功完成。<br /><br />5.<br />C:\>db2 select decrypt_char(col1) as encode from encode_demo <span style='color:red'>//解密,检索记录</span><br /><br />ENCODE<br /><br />--------------------------------------------------------------------------------<br />loveunix<br /><br /><br /> &nbsp;1 条记录已选择。<br /><!--QuoteEnd--></div><!--QuoteEEnd--><br />这里先举个简单例子,加密,解密的passwd是设置全局的,下次在来个单个字段的加密,解密passwd不一样的<!--emo&:)--><img src='style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->
2004-9-28 11:17
seven
半天才来人顶!<br />我们用db2的人也不少吧<br />我这些提到的技术,可能平时用的不多,用orain的话说,应该是"剑走偏锋"的<!--emo&:)--><img src='style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--><br />但是确实是有的!不然我也不会贴出来玩!<br /><br />这两天公司把我们的系统给北京一家公司安装一套演示的使用版本, 所有的联机,脱机交易应用的使用日期我们要做限定,我就是利用把截至日期放在数据库表里,用加密表字段的方式来提供时间戳的!在小机上做了一个Daemon,每天记录一个时间戳,联机,脱机应用启动时,取时间戳比较.来控制使用期限的!<br /><br />当然了加密的方式比上面的复杂一点,但是基本差不多!<br /><br />我希望能引出玉来 <!--emo&:)--><img src='style_emoticons/default/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo--> <!--emo&^_^--><img src='style_emoticons/default/happy.gif' border='0' style='vertical-align:middle' alt='happy.gif' /><!--endemo--> <!--emo&^_^--><img src='style_emoticons/default/happy.gif' border='0' style='vertical-align:middle' alt='happy.gif' /><!--endemo-->
2004-10-14 16:37
seven
<!--QuoteBegin-larryh+2004-09-28 12:09:39--><div class='quotetop'>QUOTE(larryh @ 2004-09-28 12:09:39)</div><div class='quotemain'><!--QuoteEBegin-->其他DBMS有没有这样好用的功能,如果没有如何实现?楼主能否做一个专题?<br />[right][snapback]394163[/snapback][/right]<br /><!--QuoteEnd--></div><!--QuoteEEnd--><br /><br />一直没有来更新这个贴, larryh老大让我做个专题, 太菜了 <!--emo&:blush:--><img src='style_emoticons/default/blush.gif' border='0' style='vertical-align:middle' alt='blush.gif' /><!--endemo--> , 加上对别的数据库了解甚少, 更是不刚乱写. <!--emo&:P--><img src='style_emoticons/default/tongue.gif' border='0' style='vertical-align:middle' alt='tongue.gif' /><!--endemo--> 了解其他数据库相应功能的dx, 该你们现玉了, 我们一起来做个真正的专题. <!--emo&^_^--><img src='style_emoticons/default/happy.gif' border='0' style='vertical-align:middle' alt='happy.gif' /><!--endemo--> <br /><br /><br />就把上面的DB2使用encrypt和decrypt_char函数进行表数据加密/解密的内容补充完整吧!<br /><br /><br />相关的函数原型:<br /><!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->1. Encrypt (StringDataToEncrypt, PasswordOrPhrase, PasswordHint)<br />StringDataToEncrypt: 待加密的字符串<br />PasswordOrPhrase:密钥<br />PasswordHint:密钥提示(但你忘记密钥的时候就派上用场了)<br /><br />2. Decrypt_Char(EncryptedData, PasswordOrPhrase)<br />EncryptedData:待解密的字符串<br />PasswordOrPhrase:密钥<br /><br />3. GetHint(EncryptedData)<br />EncryptedData:加密后的字符串<br /><br />4. Set Encryption Password :设置全局的加密密钥<br /><br /><!--QuoteEnd--></div><!--QuoteEEnd--><br /><br />在第一贴里介绍的就是简单的使用全局加密密钥, 实现表数据的列级加密,利用encrypt函数,可以对每条记录按不同的加密密钥进行加密:<br />例如:<br /><!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->1. insert<br />db2 "insert into encrypt_tbl(serial, timemac) values(1, encrypt('20041010','loveunix'))" //这里使用loveunix做为时间戳的加密密钥<br /><br />在插一条<br />db2 "insert into encrypt_tbl(serial, timemac) values(2, encrypt('20041010','seven'))" //换用seven做该条记录的加密密钥<br /><br />2. select<br />db2 "select decrypt_char(timemac,'loveunix') from encrypt_tbl"<br /><br />db2 "select decrypt_char(timemac,'seven') from encrypt_tbl"<br /><br />按不同的密钥分别进行检索<br /><!--QuoteEnd--></div><!--QuoteEEnd--><br /><br /><br />下面是使用密钥提示的例子:<br /><!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->db2 "insert into encrypt_tbl values(3, encrypt('20041010','loveunix','seven'))"<br />DB20000I SQL 命令成功完成。<br /><br />db2 select gethint(timemac) from encrypt_tbl where serial=3<br /><br />1<br />--------------------------------<br />seven<br /><!--QuoteEnd--></div><!--QuoteEEnd--><br /><br /><br />另: 对于非字符串的字段加密,可以使用转换函数将类型强制转换成字符类型进行加密<br />encrypt和decrypt_char函数大概就介绍这么多,太复杂的应用我现在还没有使用到,有时间在看看SQL Reference看有没有上面补充<br />