470,848 Members | 1,214 Online

# MD5

Hello,

The function md5 encrypts a string :

md5('hello') --> 5d41402abc4b2a76b9719d911017c592

But how do we uncrypt a md5 string ?

function('5d41402abc4b2a76b9719d911017c592') --> hello

Any help would be welcome.

Titi.
Sep 29 '05 #1
11 4595
Thierry wrote:

The function md5 encrypts a string :
No, it doesn't. MD5 is not an encryption algorithm, it's a
hashing algorithm. Hashed strings are not supposed to be
"decrypted"; this is not what hashing is for.
But how do we uncrypt a md5 string ?

Since you didn't encrypt the string, you can't decrypt it, either.
The only way to "decrypt" MD5 is to use a dictionary attack; if it
fails, only brute force is left.

Cheers,
NC

Sep 29 '05 #2
"Thierry" wrote:
The function md5 encrypts a string :
md5('hello') --> 5d41402abc4b2a76b9719d911017c592

But how do we uncrypt a md5 string ?
function('5d41402abc4b2a76b9719d911017c592') --> hello

--
phil [dot] ronan @ virgin [dot] net
http://vzone.virgin.net/phil.ronan/
Sep 29 '05 #3
On Thu, 29 Sep 2005 20:18:58 +0200, Thierry <ab***@microsoft.com> wrote:
The function md5 encrypts a string :
md5('hello') --> 5d41402abc4b2a76b9719d911017c592
No, it does not encrypt a string. It hashes a string.
But how do we uncrypt a md5 string ?
function('5d41402abc4b2a76b9719d911017c592') --> hello

You cannot. It is impossible to go back to the original value.

http://en.wikipedia.org/wiki/Md5
http://en.wikipedia.org/wiki/Hash_function
--
Andy Hassall :: an**@andyh.co.uk :: http://www.andyh.co.uk
http://www.andyhsoftware.co.uk/space :: disk and FTP usage analysis tool
Sep 29 '05 #4
Andy Hassall a écrit :
On Thu, 29 Sep 2005 20:18:58 +0200, Thierry <ab***@microsoft.com> wrote:

The function md5 encrypts a string :
md5('hello') --> 5d41402abc4b2a76b9719d911017c592

No, it does not encrypt a string. It hashes a string.

But how do we uncrypt a md5 string ?
function('5d41402abc4b2a76b9719d911017c592') --> hello

You cannot. It is impossible to go back to the original value.

In this case, what algo should I use ? Is there any
encryption/decryption algo esay to use ?

Titi

Sep 29 '05 #5
On Thu, 29 Sep 2005 20:54:35 +0200, Thierry <ab***@microsoft.com> wrote:
In this case, what algo should I use ? Is there any
encryption/decryption algo esay to use ?

There's several, but what are your requirements?
--
Andy Hassall :: an**@andyh.co.uk :: http://www.andyh.co.uk
http://www.andyhsoftware.co.uk/space :: disk and FTP usage analysis tool
Sep 29 '05 #6
Thierry wrote:

In this case, what algo should I use ? Is there any
encryption/decryption algo esay to use ?

Titi

The ROT13 and ROT26 encryption algorithms currently provide the highest
level of security with ease.

Cheers,

Steve
Sep 30 '05 #7
Stephen Gordon wrote:
Thierry wrote:

In this case, what algo should I use ? Is there any
encryption/decryption algo esay to use ?

Titi

The ROT13 and ROT26 encryption algorithms currently provide the highest
level of security with ease.

hehe

Are you trying for a job at Adobe, Steve?

OP:
depends what you want to do. Maybe you could use a hash to solve your
problem. Do you want symmetric or asymmetric encryption? How secure do you
want it to be? What platform are you running on? What are you trying to
secure? Whom are you trying to secure it from....

C.
Sep 30 '05 #8
NC wrote:

Since you didn't encrypt the string, you can't decrypt it, either.
The only way to "decrypt" MD5 is to use a dictionary attack; if it
fails, only brute force is left.

You can't decrypt it - you can only get colllisions then try to pick the
best candidate - and even then, it will take a ridiculously long time.

C.
Sep 30 '05 #9
Andy Hassall wrote:
On Thu, 29 Sep 2005 20:18:58 +0200, Thierry <ab***@microsoft.com> wrote:
The function md5 encrypts a string :
md5('hello') --> 5d41402abc4b2a76b9719d911017c592

No, it does not encrypt a string. It hashes a string.

<snip>

I presume, your news server is bit lag. (These days, you answer most
it is from Andy Hassall:-))

--
<?php echo 'Just another PHP saint'; ?>
Email: rrjanbiah-at-Y!com Blog: http://rajeshanbiah.blogspot.com/

Sep 30 '05 #10
i needed to solve the same problem as you just a couple of days ago. first i
tried mcrypt, which is an extension to php, but it is very rarely installed
on php host machines. so i was looking for a php implementation of blowfish,
as it can only be cracked by brute force, hence it is safe.

i have attached the php code at the end of this mail. i do also have a c++
implementation of it should you be interested. usage is as follows:

\$blowfish = new BlowFish("provideanarbitrarykey");
\$encrypted = \$blowfish->encrypt("this is the text you want to encrypt");
\$decrypted = \$blowfish->decrypt(\$encrypted);
echo "\$encrypted \$decrypted\n";

hope that helps.

---------------- BLOWFISH.PHP ------------------

<?php
// PHP implementation of the blowfish algorithm
// taken from http://www.peak.ne.jp/xoops/md/news/...php?storyid=64
// php implementation by gijoe, 2005
// c implementation by paul kocher, 1997
// blowfish algorithm by bruce schneier
// usage:
// \$blowfish = new BlowFish("provideanarbitrarykey");
// \$encrypted = \$blowfish->encrypt("this is the text you want to encrypt");
// \$decrypted = \$blowfish->decrypt(\$encrypted);
// echo "\$encrypted \$decrypted\n";
// -----------------------------------------------------------------------------
class BlowFish
// -----------------------------------------------------------------------------
{
var \$N = 16;
var \$P = array();
var \$S = array();
var \$ORIG_P = array
(
0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344,
0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89,
0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917,
0x9216D5D9, 0x8979FB1B
);
var \$ORIG_S = array
(
array
(
0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A
),
array
(
0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
),
array
(
0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0
),
array
(
0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6
)
);
// -----------------------------------------------------------------------------
function F(\$x)
// -----------------------------------------------------------------------------
{
\$d = (\$x & 0xFF);
\$x >>= 8;
\$c = (\$x & 0xFF);
\$x >>= 8;
\$b = (\$x & 0xFF);
\$x >>= 8;
\$a = (\$x & 0xFF);
\$y = \$this->S[0][\$a] + \$this->S[1][\$b];
\$y = \$y ^ \$this->S[2][\$c];
\$y = \$y + \$this->S[3][\$d];
return \$y;
}
// -----------------------------------------------------------------------------
function Blowfish_Encrypt(&\$xl, &\$xr)
// -----------------------------------------------------------------------------
{
\$X_l = \$xl;
\$X_r = \$xr;
for (\$i = 0; \$i < \$this->N; ++\$i)
{
\$X_l = \$X_l ^ \$this->P[\$i];
\$X_r = \$this->F( \$X_l ) ^ \$X_r;
\$temp = \$X_l;
\$X_l = \$X_r;
\$X_r = \$temp;
}
\$temp = \$X_l;
\$X_l = \$X_r;
\$X_r = \$temp;
\$X_r = \$X_r ^ \$this->P[\$this->N];
\$X_l = \$X_l ^ \$this->P[\$this->N + 1];
\$xl = \$X_l;
\$xr = \$X_r;
}
// -----------------------------------------------------------------------------
function Blowfish_Decrypt(&\$xl, &\$xr)
// -----------------------------------------------------------------------------
{
\$X_l = \$xl;
\$X_r = \$xr;
for (\$i = \$this->N + 1; \$i > 1; --\$i)
{
\$X_l = \$X_l ^ \$this->P[\$i];
\$X_r = \$this->F( \$X_l) ^ \$X_r;
// Exchange \$X_l and \$X_r
\$temp = \$X_l;
\$X_l = \$X_r;
\$X_r = \$temp;
}
// Exchange \$X_l and \$X_r
\$temp = \$X_l;
\$X_l = \$X_r;
\$X_r = \$temp;
\$X_r = \$X_r ^ \$this->P[1];
\$X_l = \$X_l ^ \$this->P[0];
\$xl = \$X_l;
\$xr = \$X_r;
}

function Blowfish_Init(\$key ,\$keyLen)
{
\$this->S = \$this->ORIG_S ;
\$j = 0;
for (\$i = 0; \$i < \$this->N + 2; ++\$i)
{
\$data = 0x00000000;
for (\$k = 0; \$k < 4; ++\$k)
{
\$data = (\$data << 8) | ord(\$key[\$j]);
\$j = \$j + 1;
if (\$j >= \$keyLen)
\$j = 0;
}
\$this->P[\$i] = \$this->ORIG_P[\$i] ^ \$data;
}
\$datal = 0x00000000;
\$datar = 0x00000000;
for (\$i = 0; \$i < \$this->N + 2; \$i += 2)
{
\$this->Blowfish_Encrypt(\$datal, \$datar);
\$this->P[\$i] = \$datal;
\$this->P[\$i + 1] = \$datar;
}
for (\$i = 0; \$i < 4; ++\$i)
{
for (\$j = 0; \$j < 256; \$j += 2)
{
\$this->Blowfish_Encrypt(\$datal, \$datar);
\$this->S[\$i][\$j] = \$datal;
\$this->S[\$i][\$j + 1] = \$datar;
}
}
}
// -----------------------------------------------------------------------------
function BlowFish(\$key)
// -----------------------------------------------------------------------------
{
\$this->Blowfish_Init(\$key, strlen(\$key));
}
// -----------------------------------------------------------------------------
function encrypt(\$str)
// -----------------------------------------------------------------------------
{
\$ret = '';
for (\$i = 0 ;\$i < strlen( \$str ); \$i += 8)
{
\$x0 = isset( \$str[\$i] ) ? ord( \$str[\$i] ) : 0;
\$x1 = isset( \$str[\$i+1] ) ? ord( \$str[\$i+1] ) : 0;
\$x2 = isset( \$str[\$i+2] ) ? ord( \$str[\$i+2] ) : 0;
\$x3 = isset( \$str[\$i+3] ) ? ord( \$str[\$i+3] ) : 0;
\$x4 = isset( \$str[\$i+4] ) ? ord( \$str[\$i+4] ) : 0;
\$x5 = isset( \$str[\$i+5] ) ? ord( \$str[\$i+5] ) : 0;
\$x6 = isset( \$str[\$i+6] ) ? ord( \$str[\$i+6] ) : 0;
\$x7 = isset( \$str[\$i+7] ) ? ord( \$str[\$i+7] ) : 0;
\$xl = \$x0 * 16777216 + \$x1 * 65536 + \$x2 * 256 + \$x3;
\$xr = \$x4 * 16777216 + \$x5 * 65536 + \$x6 * 256 + \$x7;
\$this->Blowfish_Encrypt(\$xl, \$xr);
\$ret .= sprintf("%08x%08x", \$xl, \$xr);
}
return \$ret ;
}
// -----------------------------------------------------------------------------
function decrypt(\$str)
// -----------------------------------------------------------------------------
{
\$ret = '';
while (strlen(\$str))
{
\$xl = hexdec(substr(\$str, 0, 8));
\$xr = hexdec(substr(\$str, 8, 8));
\$str = substr(\$str, 16);
\$this->Blowfish_Decrypt(\$xl, \$xr);
\$x0 = chr( \$xl >> 24 );
\$x1 = chr( ( \$xl >> 16 ) & 0x000000ff );
\$x2 = chr( ( \$xl >> 8 ) & 0x000000ff );
\$x3 = chr( \$xl & 0x000000ff );
\$x4 = chr( \$xr >> 24 );
\$x5 = chr( ( \$xr >> 16 ) & 0x000000ff );
\$x6 = chr( ( \$xr >> 8 ) & 0x000000ff );
\$x7 = chr( \$xr & 0x000000ff );
\$ret .= \$x0 . \$x1 . \$x2 . \$x3 . \$x4 . \$x5 . \$x6 . \$x7;
}
return str_replace("\0", '', \$ret);
}
}
?>
Oct 1 '05 #11
Andy Hassall a écrit :
On Thu, 29 Sep 2005 20:54:35 +0200, Thierry <ab***@microsoft.com> wrote:

In this case, what algo should I use ? Is there any
encryption/decryption algo esay to use ?

There's several, but what are your requirements?

I do not really need so much. It's a small personal webapp... The
easiest would be the best.
Oct 2 '05 #12

### This discussion thread is closed

Replies have been disabled for this discussion.