我是一名PHP开发人员,几乎不了解.NET..NET工作人员已经要求我将用于解密身份验证票证的.NET代码转换为PHP,以便PHP代码可以为我的应用程序设置适当的会话变量来运行.这甚至可能吗?我正盯着代码,这让我感到困惑.我会继续尝试,如果有人能告诉我这不是浪费时间因为某种原因我甚至都不知道.谢谢你的帮助!
附加信息:我是否可以首先使用PHP获取票证?
我上次认为我不够具体.开始了:
我有一个十六进制字符串:
742713478fb3c36e014d004100440041004 e0041004e00000060f347d15798c9010060 6b899c5a98c9014d007900470072006f007 500700000002f0000001f7691944b9a3306 295fb5f1f57ca52090d35b50060606060606
最后20个字节应该(理论上)包含第一部分的SHA1哈希(完整字符串--20字节).但它不适合我.
尝试用PHP做到这一点,但没有运气.你能得到一场比赛吗?
742713478fb3c36e014d004100 440041004e0041004e00000060 f347d15798c90100606b899c5a 98c9014d007900470072006f00 7500700000002f0000001f7691944b9a
3306295fb5f1f57ca52090d35b50060606060606
b6ecd613698ac3533b5f853bf22f6eb4afb94239
这是故障单中的内容以及它的存储方式.FWIW,我可以提取用户名等,并发现各种分隔符. http://www.codeproject.com/KB/aspnet/Forms_Auth_Internals/AuthTicket2.JPG
编辑:我发现字符串最后由它在此之前经过的解密函数填充.我删除了最后6个字节并相应地调整了票据和哈希值.仍然不起作用,但我更接近.
我有一组字节我想应用sha1哈希.一个哈希将在.net中,另一个在PHP中.然后我会测试它们是否匹配.
在.net中,您可以创建一个字节数组并使用sha.ComputeHash().
byte[] data = new byte[DATA_SIZE];
byte[] result;
SHA1 sha = new SHA1CryptoServiceProvider();
// This is one implementation of the abstract class SHA1.
result = sha.ComputeHash(data);
Run Code Online (Sandbox Code Playgroud)
在PHP中,您调用sha1($ string).
我无法对代码的.net方面做任何事情,但是如何从PHP中获取与.net将生成的相同的哈希?
请注意:我只能在PHP方面工作..net的东西是固定的,无法修改.谢谢!
<machineKey validation="SHA1" validationKey="<64-byte key>"
Run Code Online (Sandbox Code Playgroud)
validationKey究竟做了什么?假设我使用SHA1创建哈希.validationKey如何发挥作用?
考虑以下代码:
HMACSHA1 hashSha = new HMACSHA1(_validationKey);
byte[] ret = hashSha.ComputeHash(bytes, offSet, count);
return ret;
Run Code Online (Sandbox Code Playgroud)
我们正在生成一个新的_validationkey,对吗?然后我们获取字节并在ComputeHash中散列它们._validationKey有什么意义?当我们以某种方式验证哈希时,我们是否需要它?
如果它在这个过程中没有任何作用,那么以下是真的吗?
我有一个80字节长的字节数组,最后20个字节包含一个asp.net sha1哈希,然后是前60个字节,如果sha1哈希值应该匹配最后20个字节
validationKey在这方面没有任何作用?
Drupal似乎可以为非程序员提供很多东西.大量的模块和易于安装.但是你会说你需要成为一名程序员?它在哪里掉下来需要更多的动手关注?
此外,即使它们没有"意图"完成,我也对您必须对代码库进行的任何自定义调整感兴趣.
我正在构建一个PHP/MySQL应用程序,用户可以登录并搜索媒体资产.他们还可以保存搜索并创建灯箱(资产集合).最后,他们可以创建用户组.
在登录时,一次查询所有已保存的搜索,灯箱和组的ID并将其保存在会话变量中是否更有意义?或者在第一次点击相应页面时执行查询?我正在寻找效率,会议似乎是要走的路,但我忽略了什么吗?
我正在编写一个PHP脚本来从提交的表单中获取文本框数据.这些是简单的文本框,我不想接受任何HTML标记.我想我至少应该使用strip_tags()和addslashes().还要别的吗?我不介意限制输入到字母数字,我应该使用正则表达式来寻找非标准字符吗?
这是一个简单的表单,实际上(呃)通过电子邮件发送给处理它的人.(遗憾的是没有数据库.)这是简单的数据,名字和姓氏.
编辑:我也想知道我应该寻找什么.合理输入过滤的共识是什么?
我有一个用PHP处理的表单.在用户提交之前,"重置"按钮有效.但是当他们提交并重新加载页面时(我已根据$ _POST值使表单字段粘滞),重置不起作用.我该如何解决这个问题?编辑:例如,表单上的复选框:
<input type="checkbox" <?php if (isset($_POST['cb12'])){echo 'checked="checked"';} ?> name="cb12" tabindex="34" id=cb value="Education">
Run Code Online (Sandbox Code Playgroud)
和HTML:
<tr>
<td colspan="5" valign="top" class="addit" ><div class="sectionbreak topsp" >
<input type="hidden" name="failure" value="failure.html" >
<p>
<input type="submit" name="Submit" value="Submit" tabindex="49">
Sends your application by email to The Boggs</p>
<p>
<input type="reset" name="Reset" value="Reset" tabindex="50">
Clears all the fields</p>
</div></td>
</tr>
Run Code Online (Sandbox Code Playgroud)
编辑:最后,如果表单已提交(但未完成),我只是隐藏了按钮.也许没有人会注意到.
php ×6
.net ×3
forms ×2
sha1 ×2
asp.net ×1
c# ×1
drupal ×1
encryption ×1
hash ×1
html ×1
mysql ×1
performance ×1
reset ×1
security ×1
validation ×1