我在android上遇到了一些HMAC的问题.我正在使用SHA1算法,以下代码在搜索android hmac-sha1时显示在整个网络上.
String base_string = "This is a test string";
String key = "testKey";
try {
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec secret = new SecretKeySpec(key.getBytes("UTF-8"), mac.getAlgorithm());
mac.init(secret);
byte[] digest = mac.doFinal(base_string.getBytes());
String enc = new String(digest);
// Base 64 Encode the results
String retVal = Base64.encodeBase64String(enc.getBytes());
Log.v(TAG, "String: " + base_string);
Log.v(TAG, "key: " + key);
Log.v(TAG, "result: " + retVal);
} catch (Exception e) {
System.out.println(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
为了测试这段代码我用它创建了一个简单的标准Java程序(当然用System.out.println调用替换Log.v调用)所以我可以比较android版本.在这两个实例中,我对base_string和key使用相同的测试值.
此外,我已经使用一些PHP函数和验证服务器(使用一些OAuth令牌)验证了标准Java的编码结果.代码在标准Java程序中运行良好,但它在Android程序中不起作用.我做了很多搜索,无法弄清楚出了什么问题.有没有人经历过这个?
以下是标准java和android的结果......
fH/+pz0J5XcPZH/d608zGSn7FKA=fH/vv73vv709Ce+/vXcPZH/vv73vv71PMxkp77+9FO+/vQ==进一步研究一下,我确信它是hmac函数,而不是Base64编码,因为比较那些hmac值,Android版本有各种额外的空格和其他未知字符符号与Java程序相混淆.
任何帮助表示赞赏!
我有一个让我发疯的问题.
我创建了一对键:
$res = openssl_pkey_new(array('private_key_bits' => 2048));
/* Extract the private key from $res to $privKey */
openssl_pkey_export($res, $privKey);
/* Extract the public key from $res to $pubKey */
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];
Run Code Online (Sandbox Code Playgroud)
使用此代码,我有$pubKey和$privKey.
我可以正确地加密/解密,但我对DECRYPTION有很大疑问.
目前我的密码数据正在做:
openssl_public_encrypt($data, $encrypted, $pubKey);
Run Code Online (Sandbox Code Playgroud)
它正确加密我的数据,但是阅读PHP Doc,我发现:
http://php.net/manual/en/function.openssl-public-decrypt.php
我可以使用PUBLIC KEY解密数据吗?为什么?
我知道公钥对ENCRYPT数据很有用,但只有私钥的所有者才能解析数据.
如果我可以使用公钥解密数据,那么让知道公钥的用户可以轻松解密这些消息.
有人可以向我解释一下吗?我正在寻找一种方法来使用两个键,第一个是ENCRYPT,第二个(只有第二个)是DECRYPT.
谢谢
我在Perl中有一个导出变量的结果,就像这个字符串:
$VAR1 = {
'guard' => undef,
'work_hand' => undef,
'images' =>
{'1' =>
{
'mini_height' => 150,
'width' => 150,
'extension' => 'jpg',
'filename' => 'object_1.1330907414.96873.jpg',
'mini_width' => 150,
'class' => 'Ontico::Image',
'height' => 150,
'mini_filename' => 'object_1.1330907414.96873.mini.jpg',
'size' => 26053,
'symname' => 'big_logo'
},
'2' =>
{
'width' => 48,
'extension' => 'jpg',
'alt' => '??????? ????????',
'height' => 48,
'mini_filename' => 'object_91.1235312905.mini.jpg',
'size' => 12809,
'symname' => 'logo',
'mini_height' => 150,
'filename' => 'object_91.1235312905.jpg',
'mini_width' => 150, …Run Code Online (Sandbox Code Playgroud) 我是opencv的新手(在c ++中),我正在尝试实现线路检测.
我有一张有几行的图片,我正在尝试确定线条之间的距离.我知道有Hough,Canny等,但是如何获得不同线的坐标来计算线之间的距离?我应该使用opencv轮廓函数还是有更好的方法?我不需要完整的代码示例,但有人能告诉我完成工作的最佳方法吗?
假设一个表有两列名为“x”和“y”的列填充了数字;例如,x 包含值 (1, 2, 3),而 y 包含 (5, 8, 20)。
如何计算列的乘积之和,即 (1 × 5) + (2 × 8) + (3 × 20) = 81?
我和一位平面设计师一起工作,他经常想要制作比我推荐的960像素更大的网站.我可以用液体布局做一定数量但是我真的很想能够为更大的分辨率加载不同的CSS.我用Google搜索并找到了下面的链接,但我担心我会听到更多有关此事的消息.这是一种可靠的方法吗?我担心,因为我会想到更多人会想要这样做.
http://www.ilovecolors.com.ar/detect-screen-size-css-style/ 谢谢
当我运行以下代码时,它不会进入"在这里做一些事情"部分:
my $a ='µ?P[???3??<+·1????"ª';
my $b ='µ?P[???3??<+·1????"ª';
if ($a ne $b) {
# do something here
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以将Unicode字符串与perl进行比较?
我使用以下简单脚本:
from pysnmp.entity.rfc3413.oneliner import cmdgen
errorIndication, errorStatus, errorIndex, \
varBindTable = cmdgen.CommandGenerator().bulkCmd(
cmdgen.CommunityData('test-agent', 'public'),
cmdgen.UdpTransportTarget(('IP.IP.IP.IP', 161)),
0,
1,
(1,3,6,1,2,1,4,24,4,1,2,169,254)
)
if errorIndication:
print errorIndication
else:
if errorStatus:
print '%s at %s\n' % (
errorStatus.prettyPrint(),
errorIndex and varBindTable[-1][int(errorIndex)-1] or '?'
)
else:
for varBindTableRow in varBindTable:
for name, val in varBindTableRow:
print '%s = %s' % (name.prettyPrint(), val.prettyPrint())
Run Code Online (Sandbox Code Playgroud)
从命令行使用snmpwalk到此设备返回预期结果.但脚本返回超时之前未收到SNMP响应.如果我省略这个OID,那么一切正常.所以问题在于这个OID
这里tcpdump统计:
/usr/sbin/tcpdump -nn -vv -s0 -A host HOST and udp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:15:31.494920 …Run Code Online (Sandbox Code Playgroud) 我目前正在为Android开发游戏,我希望您在我遇到的问题上获得专业知识.
背景:
我的游戏包含帧速率独立运动,它在执行必要的速度计算之前考虑了增量时间值.
游戏是传统的2D平台游戏.
问题:
这是我的问题(简化).让我们假装我的角色是一个站在平台顶部的方形("重力"是一个恒定向下的characterVelocityDown速度).
我已经定义了碰撞检测如下(假设Y轴指向下方):
给定characterFootY是我的方形字符底边的y坐标,platformSurfaceY是我平台的上y坐标,platformBaseY是我平台的下y坐标:
if (characterFootY + characterVelocityDown > platformSurfaceY && characterFootY + characterDy < platformBaseY) {
//Collision Is True
characterFootY = platformSurfaceY;
characterVelocityDown = 0;
} else{
characterVelocityDown = deltaTime * 6;
Run Code Online (Sandbox Code Playgroud)
当游戏以常规速度运行时,这种方法非常适用; 但是,如果游戏速度变慢,deltaTime(前一帧和当前帧之间经过的时间)变大,而characterFootY + characterVelocityDown超过定义碰撞检测的边界,角色直接落入(就好像传送一样) ).
我应该如何处理此问题以防止这种情况发生?
在此先感谢您的帮助,我期待着向您学习!
我有以下代码从密码创建哈希,然后将其与数据库中存储的哈希密码进行比较.所有工作都优于http.这适用于在c#4.0下运行的asp.net webforms应用程序
HMACSHA1 hash = new HMACSHA1();
hash.Key = Encoding.Unicode.GetBytes(password);
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password)));
Run Code Online (Sandbox Code Playgroud)
但是,当通过https/ssl运行时,编码的密码不同,因此用户无法登录.
在通过SSL时计算哈希时,.net框架是否会做一些不同的事情?
如果我单步执行代码并复制编码密码并更新我的数据库然后通过SSL我可以登录.
有任何想法吗?
非常感谢