Encryption 无特殊字符的加密算法

Encryption 无特殊字符的加密算法,encryption,coldfusion,Encryption,Coldfusion,ColdFusion中是否有不使用任何特殊字符(仅字母数字)的加密算法?我有一些数据作为伪密码传递给用户,其中包括他们的用户名和分配给他们的站点。我需要使用ColdFusion 8 Enterprise edition内置的加密算法对字符串进行加密,并且最后的字符串中不能有任何特殊字符。这可能吗?如果可能,什么算法会这样做 <cfset loc.token = encrypt(loc.token,Application.secretKey,'Blowfish','Base64') />

ColdFusion中是否有不使用任何特殊字符(仅字母数字)的加密算法?我有一些数据作为伪密码传递给用户,其中包括他们的用户名和分配给他们的站点。我需要使用ColdFusion 8 Enterprise edition内置的加密算法对字符串进行加密,并且最后的字符串中不能有任何特殊字符。这可能吗?如果可能,什么算法会这样做

<cfset loc.token = encrypt(loc.token,Application.secretKey,'Blowfish','Base64') />


只需使用binhex即可。将每个字节编码为十六进制数,范围从00到FF。但是,Base 64包含几个非字母数字字符,例如+/=。

只需使用binhex即可。将每个字节编码为十六进制数,范围从00到FF。但是,Base 64包含几个非字母数字字符,例如+/=。

这应该适合您

#encrypt('text_im_encrypting', ToBase64(BinaryDecode('my_encrypt_key',"Hex")), 'AES', 'Hex');#

替换*text\u im\u encrypting*和*my\u encrypting\u key*值显然…=)

这应该适合你

#encrypt('text_im_encrypting', ToBase64(BinaryDecode('my_encrypt_key',"Hex")), 'AES', 'Hex');#

替换*text\u im\u encrypting*和*my\u encrypting\u key*值显然…=)

有两个未记录的函数,cfusion_encrypt(string,key)和cfusion_decrypt(string,key),它们基于十六进制字符串进行加密/解密。因此,本质上,由于生成的字符串是完全十六进制的,因此它不包含特殊字符:

<cfscript>
    writeoutput(cfusion_encrypt("stackoverflow", "rocks")); // outputs 011B0208181D190619151E0014
    writeoutput(cfusion_decrypt("011B0208181D190619151E0014", "rocks")); // outputs stackoverflow
</cfscript>

写输出(cfusion_encrypt(“stackoverflow”、“rocks”);//输出011B02081D190619151E0014
写输出(cfusion_decrypt(“011B02081D190619151E0014”,“岩石”);//输出堆栈溢出

有两个未记录的函数,cfusion_encrypt(字符串,密钥)和cfusion_decrypt(字符串,密钥),它们基于十六进制字符串进行加密/解密。因此,本质上,由于生成的字符串是完全十六进制的,因此它不包含特殊字符:

<cfscript>
    writeoutput(cfusion_encrypt("stackoverflow", "rocks")); // outputs 011B0208181D190619151E0014
    writeoutput(cfusion_decrypt("011B0208181D190619151E0014", "rocks")); // outputs stackoverflow
</cfscript>

写输出(cfusion_encrypt(“stackoverflow”、“rocks”);//输出011B02081D190619151E0014
写输出(cfusion_decrypt(“011B02081D190619151E0014”,“岩石”);//输出堆栈溢出


只需将结果编码为base-64即可!它已经在base64:)中了,即第四个参数就是这样做的,即设置输出的编码string@Leigh:哦,的确——我很粗心,只是认为“ASCII可打印”,但他真的只想要字母数字。对不起@Kerrek SB-不用担心。我一开始也没有想到十六进制。如果你想要比十六进制更多的字符,也有。只需将结果编码为base-64!它已经在base64:)中了,即第四个参数就是这样做的,即设置输出的编码string@Leigh:哦,的确——我很粗心,只是认为“ASCII可打印”,但他真的只想要字母数字。对不起@Kerrek SB-不用担心。我一开始也没有想到十六进制。如果你想要比十六进制更多的字符,还有。右-binhex是4位,base-64是6位编码。让你的船漂浮的东西。对于真正的字母数字输出,binhex确实更好。好吧,我们可以想出一个折衷方案:Base32,它是一种5位编码,尽管这可能比binhex或Base 64Nice不太为人所知。虽然它似乎仍然包括填充的
=
:-(或者你是说
base32hex
?怎么样,它不允许意外的淫秽行为?(大概是在expertsexchange.com上发明的。)@Kerrek SB-+1.哈哈。我不知道被排除的字母。@Peter O-好主意。在CF中,如果我将函数的Base64参数更改为“hex”,只需将编码参数更改为“hex”,即
加密(文本、密钥、算法、编码)
它在没有特殊字符的情况下工作得非常好。右-binhex是4位编码,base-64是6位编码。任何能让你的船漂浮的东西。对于真正的字母数字输出,binhex确实更好。好吧,我们可以想出一个折衷方案:Base32,这是一种5位编码,尽管这可能比binhex或base-64Nice不太为人所知。尽管它看起来仍然不错s包含
=
填充:-(或者你的意思是
base32hex
?怎么样,它不允许意外淫秽?(大概是在expertsexchange.com上发明的。)@Kerrek SB-+1.哈哈。我不知道被排除的字母。@Peter O-好主意。在CF中,这只是将编码参数更改为“hex”的问题ie
encrypt(text,key,algorithm,encoding)
如果我将函数的Base64参数改为“hex”,它就可以完美地工作,没有特殊字符。这是不同的。它不使用“Blowfish”算法。@Leigh:你读过这个问题吗?他没有要求使用河豚算法——他要求的算法没有返回任何特殊字符。我的意思是,我想你误解了这个问题。他问的是
加密
函数的算法。所以
cfusion\u encrypt
可能不是他想要的r(它也不提供真正的/强加密)。所需要的只是使用
加密(文本、密钥、算法、“十六进制”)
和不再使用特殊字符。这是不同的。它不使用“河豚”算法。@Leigh:你读过这个问题吗?他没有要求使用河豚算法——他要求的算法没有返回任何特殊字符。我的意思是,我想你误解了这个问题。他问的是
加密
函数的算法。所以
cfusion\u encrypt
可能不是他想要的r(它也不提供真正的/强加密)。所需要的只是使用
加密(文本、密钥、算法、“十六进制”)
并且不再使用特殊字符。