如何在 ColdFusion 中用空/零字节填充字符串以及 MacOS 和 Windows 上的 CF 之间的差异

2024-03-31

我无法理解如何用空字节填充 CF 中的字符串。在Java中我会这样做......

String ZeroPad = "";
for (int i = 0; i < 32; i++)
    ZeroPad = ZeroPad + "\0";
String strKey = strUsername + strPassword + ZeroPad;
strKey = strKey.substring(0, 32);

但是在 ColdFusion 中执行以下操作会产生类似“\0\0...”的内容,而不是空字节。

<cfset var key = arguments.username&arguments.password/>
<cfloop condition="#len(key)# less than 32">
    <cfset key = key & "\0"/>
</cfloop>
<cfset key = key.substring(0,32)/>

继续出现问题。好的,我已经将我的 CFML 更新为此...

<cfset var strB = createObject("java", "java.lang.StringBuilder")/>

<cfloop from=1 to=32 index="i">
    <cfset zeroPad = zeroPad & URLDecode("%00")/>
</cfloop>

<cfset strB.append(arguments.username)/>
<cfset strB.append(arguments.password)/>
<cfset strB.append(zeroPad)/>

<cfif strB.length() GT 32>
    <cfset key = strB.substring(0,32)/>
<cfelse>
    <cfset key = strB.toString()/>
</cfif>

生成的密钥用于 AES 加密。在我的本地开发计算机(Mac OS X Mavericks)上,这工作正常,我可以使用生成的密钥进行加密。但是,在我的生产环境 (Windows Server 2008) 上,我收到错误“密钥大小无效”。两者的密钥大小都显示为 32,我很困惑。


我用过this tip http://www.coldfusiondeveloper.com.au/null-character/过去,即:URLDecode("%00", "utf-8")

Update:

自从encrypt()函数始终将纯文本输入解释为 UTF-8 字符串,您也可以使用charsetEncode(字节,“utf-8”) http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7f63.html从单个元素字节数组创建空字符。

 charsetEncode( javacast("byte[]", [0] ), "utf-8");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ColdFusion 中用空/零字节填充字符串以及 MacOS 和 Windows 上的 CF 之间的差异 的相关文章

  • 如何绕过 CF8 编码不可打印字符中的 SerializeJSON?

    SerializeJSON 创建具有不可打印字符 即 ASCII 21 的 JSON 这是无效的 JSON 我该如何解决这个问题 删除不可打印字符的正则表达式会起作用吗 什么正则表达式会删除不可打印的字符 嗯 这个简单的解决方案是为 cff
  • 使用 Rijndael 解密文本文件

    我用过本指南 https www codeproject com Articles 12092 Encrypt Decrypt Files in VB NET Using Rijndael加密的值txtCode Text到一个文本文件中 然
  • 如何在 AES 加密中使用随机数进行解密

    我是密码学新手 我需要使用 AES 和一些配置来加密文本 Encryption mode GCM Key size 256 bits Nonce size 96 bits MAC size 128 bits 由于 AES 是一种对称算法 所
  • 使用 Coldfusion 获取浏览器和版本

    Coldfusion 中是否有内置功能可以让我知道浏览网站的浏览器和版本号 是否有现有的库可以让我做到这一点 除了检测 IE 的简单 if 语句之外 我的 google fu 没有显示很多东西 我确实在 Chrome 中转储了 cgi ht
  • 字母表中的加密和解密 - Python GCSE

    我目前正在尝试为学校编写一个程序 以便加密和解密输入的消息 我需要加密或解密的消息仅在字母表中 没有其他符号或密钥 例如 使用消息车加密输入的偏移量为 5 我希望它输出 afs 有人可以帮忙吗 这是我目前的代码 def find offse
  • 如何从 PHP 的 sha256 加密迁移到 bcrypt?

    登录 rows sql gt fetch PDO FETCH ASSOC us id rows id us pass rows password us salt rows password salt status rows attempt
  • 如果用户可以解密 web.config,那么加密它有什么意义呢?

    哎呀 一些供应商告诉我的老板 不加密 web config 是一个很大的安全漏洞 这对我来说听起来像是废话 我的意思是 如果有人破坏了服务器 我们不是就完蛋了吗 就像 Joelt 所建议的那样 ASP NET 最近出现了一个安全问题 允许人
  • 使用 CommonCrypto 的 Swift AES 加密

    我正在开发一个 iOS 应用程序代码7 1 with 斯威夫特2 1我正在尝试进行简单的加密AES 128 位 and PKCS7填充使用通用加密库 该代码有效 但每次我尝试投射NSData反对NSString然后对于 String 我得到
  • 线程“main”中的异常 java.security.UnrecoverableKeyException:给定的最终块未正确填充

    大家好 我使用 AES 进行加密 我所做的是在文本文件中加密数据并存储给定位置 如果在同一个类文件中给出 解密工作正常 我创建了一个不同的 java 类来解密该文件 我使用带有用户名和密码的 Javakeystore 来存储密钥并检索它并使
  • 拥有 n (2048 位数字),如何找到满足 n = p*q 的两个数字 p 和 q,其中 p = r||s (r 和 s 连接)和 q = s||r?

    我正在使用 RSA 加密 解密系统 并且我有模数 n 这是一个 2048 位数字 我需要找到 p 和 q 它们满足 n p q 并且都是素数 给我的线索是 p 等于 q 但其位颠倒了 正如我在本文标题中所说的那样 具体来说 r 和 s 具有
  • 解密Javascript源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经编写了一段 JavaScrip
  • 用于加密的 Webauthn

    我们有一个 PWA 项目 我们想要实现客户端加密 我们希望将 Webauthn 用作与密码结合的第二因素 在后台我们使用随机生成的密钥来加密 解密数据库 该密钥与密码对称加密存储在服务器上 然而 我正在努力寻找一种使用 webauthn 向
  • TripleDES 密钥大小 - .NET 与 Wikipedia

    根据维基百科 http en wikipedia org wiki Triple DES TripleDES 支持 56 112 和 168 位密钥长度 但 System Cryptography TripleDESCryptoServic
  • 使用 .NET 加密和解密数字

    NET 使用 C 有哪些可用的加密技术 我有一个数值 我想将其加密为字符串表示形式 哪一款支持解密 加密 由 NET 框架 BCL 提供 而不是 C 语言提供 通常对字节进行加密 但那很好 数字很 容易表示为字节 并且输出字节可以通过以下方
  • 将 ColdFusion 输出中的 # 视为文本而不是变量?

    我制作了一个 JQuery 列表 我想用数据库中的车牌号码填充它 为此 我创建了一个新的 cfm 文件 并让它在 html 中输出我想要的内容 这样我以后就可以像这样转换它 设置板 cfm
  • Java - 使用数组中的值的replace()方法正在更改数组值?

    我正在做类似的事情 public static String list a b c d It gives me a NullPointeException if I didn t use static public String encry
  • 恢复 SQL Server 数据库 - 主密钥未打开

    我必须制作远程 SQL Server 数据库的本地副本 我通过使用 Management Studio 中的 任务 gt 备份 来完成此操作 然后 我在本地恢复了备份 该备份似乎包含了所有内容 表 用户 对称密钥和证书 当我尝试执行需要打开
  • .png 和 .jpg 文件解密

    我正在尝试修改我正在使用的软件的图形资产 出于审美目的 我想很难对图形资产做一些有害的事情 但开发人员对它们进行了加密 我不确定他为什么决定这样做 因为我使用和修改了一堆类似的软件 而这些软件的开发人员并没有打扰 因为我看不出为什么需要加密
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器

随机推荐