我目前正在处理从Level3 CDN保护rtmp流的问题.
文档可以在这里找到:https: //rapidshare.com/files/1450549534/Token_Components.html (看起来你需要登录才能查看,因此我在托管上托管.原始网址是: https:// mediaportal.level3.com/mediaWeb/help/Content/ServicesDocs-Streaming/StreamingTokenAuth/TokenComponents.htm)
Scoll down to On Demand流输入/输出示例(适用于MP4文件)
我试图重现该示例并获得具有相同值的相同网址.我为此写了一个小函数:
function flimmithash($file) {
$streamer = 'pmsales';
$host = 'pmsalesfs.fplive.net';
$start_time = '20080101120000';
$end_time = '20101231235900';
$customer_secret = 'Secret'; // in the documentation there is also secret with a non capital s, i tried both
$resouce_path = "/$streamer/$file"; echo "resouce_path: $resouce_path <br>\n";
$message = "$resouce_path?start_time=$start_time&end_time=$end_time#$customer_secret"; echo "message: $message <br>\n";
$digest = md5($message); echo "digest: $digest <br>\n";
$tokenvalue = "start_time=$start_time&end_time=$end_time&digest=$digest"; echo "tokenvalue: $tokenvalue <br>\n";
$token = …Run Code Online (Sandbox Code Playgroud) 我的问题:
我正在寻找一种将一个人的姓名和地址表示为编码 id 的方法。id 应该只包含字母数字字符,是防冲突的,并以尽可能少的字符表示。我的第一个想法是简单地使用像 MD5 或 SHA1 这样的加密哈希函数,但这似乎有点矫枉过正(安全性并不重要 - 不需要是单向的),我更愿意找到可以产生更短的 ID。有谁知道适合这个问题的现有算法?
换句话说,实现以下函数的最佳方法是什么,以便相同输入的返回值始终相同,不太可能发生冲突,并且 id 少于 20 个字符?
>>> make_fake_id(fname = 'Oscar', lname = 'Grouch', stnum = '1', stname = 'Sesame', zip = '12345')
N1743123734
Run Code Online (Sandbox Code Playgroud)
应用程序上下文(对于那些感兴趣的人):
这将用于记录链接应用程序。给定一个输入名称和地址,我们在一个非常大的数据库中搜索最佳匹配并返回数据库 ID 和其他数据(我们如何做在这里并不重要)。如果没有匹配项,我需要从搜索输入(实体的名称和地址数据)生成这个伪/生成/派生 ID。每个搜索记录都应该产生一个输出记录,其中包含一个真实的(由匹配/链接产生的实际数据库 ID)或这个生成的伪/生成/派生 ID。伪 id 将以字符(例如 N)为前缀,以将其与真实 id 区分开来。
我想知道如何创建一个充满字符串的ruby数组的一致哈希.要求是,如果数组包含相同的值,则哈希值始终相同,与其顺序无关.
>> a = ["a", "b", "c", "d"]
>> SomeModule.hash(a)
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
>>
>> b = ["d", "b", "c", "a"]
>> SomeModule.hash(b)
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
>>
>> SomeModule.hash(a) == SomeModule.hash(b)
=> true
Run Code Online (Sandbox Code Playgroud)
Zlib或digest只做字符串,但我必须总是对数组进行排序并加入它以使其正常工作.
那有什么更好的吗?
我正在尝试使用python从我的公司服务器访问页面。第一路径返回401:未授权(服务器确实需要域用户名/ pwd进行身份验证)。标头内容如下,它似乎支持3种身份验证协议,即Negotiate,NTLM和Digest,所以据我所知,我可以选择其中的一种,对吗?
Content-Type: text/html
Server: Microsoft-IIS/7.0
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
WWW-Authenticate: Digest qop="auth",algorithm=MD5-sess,nonce="+Upgraded+v184080dc2d18fe10d63520db505929b5b5b929ec98692ce010e80d6347b7a35d4027e59e277ac4fe1c257a95196071258a8e0797bf6129f76",charset=utf-8,realm="Digest"
X-Powered-By: ASP.NET
Date: Tue, 06 Aug 2013 09:24:44 GMT
Connection: close
Content-Length: 1293
Set-Cookie: LB-INFO=1065493258.20480.0000; path=/
Run Code Online (Sandbox Code Playgroud)
我正在使用以下python代码,但仍然出现401错误错误,有人可以告诉我如何实现吗?我应该使用NTLM吗?提前致谢!
p = urllib2.HTTPPasswordMgrWithDefaultRealm()
p.add_password(None, self.url, username, password)
handler = urllib2.HTTPDigestAuthHandler(p)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
f = opener.open(self.url)
Run Code Online (Sandbox Code Playgroud) 我通过散列包含所有这些信息的字符串并比较散列对象的十六进制摘要来比较个人的个人信息,特别是他们的姓名、生日、性别和种族。这将生成一个 32 位的十六进制数,我将其用作数据库中的主键。例如,使用我的识别字符串的工作方式如下:
>> import hashlib
>> id_string = "BrianPeterson08041993MW"
>> byte_string = id_string.encode('utf-8')
>> hash_id = hashlib.md5(bytesring).hexdigest()
>> print(hash_id)
'3b807ad8a8b3a3569f098a575091bc79'
Run Code Online (Sandbox Code Playgroud)
在这一点上,我试图确定碰撞风险。我的理解是 MD5 没有显着的碰撞风险,至少对于相对较小的字符串,我的字符串(长度约为 20-40 个字符)。但是,我没有使用 128 位摘要对象,而是使用 32 位十六进制摘要。
现在,我相信 hexdigest 是摘要的压缩(也就是说,它存储在较少的字符中),所以在比较 hexdigest 时是否会增加碰撞风险?还是我不在基地?
我有消息(m),我想通过不安全的方式发送数据后存储一些数据以验证其完整性。
我可以创建一个数字签名(DSA / RSA)。
或者,我可以计算摘要(哈希)并将其加密。
无论如何,当接收方收到消息时,应验证其完整性。
哪种方法更安全S(m)或C(H(m))?
更新
假设爱丽丝想向鲍勃发送一条消息
使用数字签名:
爱丽丝的部分:
鲍勃的部分:
使用摘要:
爱丽丝的部分:
鲍勃的部分:
我看到了使用发布的第二种方法的软件,但是我认为第一种更安全,对吗?
更新2
总之,最好的方法是使用第一种方法通过安全方式与Bob共享Alice的公钥。
第二种方法根本不提供安全性。
感谢@Perseids
我有这种情况.
我有一个生成PDF的应用程序,需要签名.
我们没有签署文档的证书,因为它们在HSM中,我们使用证书的唯一方法是使用Web服务.
此Web服务提供两个选项,发送PDF文档,并返回已签名的pdf,或发送将要签名的哈希.
第一个选项是不可行的,因为PDF没有时间戳签名(这是一个非常重要的必要条件),因此选择了第二个选项.
这是我们的代码,首先,我们得到签名外观,并计算哈希:
PdfReader reader = new PdfReader(Base64.decode(pdfB64));
reader.setAppendable(true);
baos = new ByteArrayOutputStream();
PdfStamper stamper = PdfStamper.createSignature(reader, baos, '\0', null, true);
appearance = stamper.getSignatureAppearance();
appearance.setCrypto(null, chain, null, PdfSignatureAppearance.SELF_SIGNED);
appearance.setVisibleSignature("Representant");
cal = Calendar.getInstance();
PdfDictionary dic = new PdfDictionary();
dic.put(PdfName.TYPE, PdfName.SIG);
dic.put(PdfName.FILTER, PdfName.ADOBE_PPKLITE);
dic.put(PdfName.SUBFILTER, new PdfName("adbe.pkcs7.detached"));
dic.put(PdfName.M, new PdfDate(cal));
appearance.setCryptoDictionary(dic);
HashMap<PdfName, Integer> exc = new HashMap<PdfName, Integer>();
exc.put(PdfName.CONTENTS, Integer.valueOf(reservedSpace.intValue() * 2 + 2));
appearance.setCertificationLevel(1);
appearance.preClose(exc);
AbstractChecksum checksum = JacksumAPI.getChecksumInstance("sha1");
checksum.reset();
checksum.update(Utils.streamToByteArray(appearance.getRangeStream()));
hash = checksum.getByteArray();
Run Code Online (Sandbox Code Playgroud)
在这一点上,我们有文档的哈希码.然后我们将哈希发送到webservice,我们得到签名的哈希码.
最后,我们将签名的哈希值放到PDF中:
byte[] paddedSig = …Run Code Online (Sandbox Code Playgroud) 我需要向数据集中的每一行添加一个指纹,以便与同一组的更高版本进行检查以寻找差异。
我知道如何为R中的每一行添加哈希,如下所示:
data.frame(iris,hash=apply(iris,1,digest))
Run Code Online (Sandbox Code Playgroud)
我正在学习使用,dplyr因为数据集越来越大,我需要将它们存储在SQL Server中,我尝试了以下类似操作,但是哈希无法正常工作,所有行都提供相同的哈希值:
iris %>%
rowwise() %>%
mutate(hash=digest(.))
Run Code Online (Sandbox Code Playgroud)
关于使用dplyr进行逐行哈希处理的任何线索?谢谢!
我正在尝试执行发布请求,并且正在尝试使用摘要身份验证来执行此操作。有libcurl,我设置的选项:
curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_easy_setopt(curl_handle, CURLOPT_USERPWD, "username:password");
Run Code Online (Sandbox Code Playgroud)
在设置所有其他选项(post、url 和所有内容)之前。服务器关闭了我的连接,我认为没有进行任何摘要。我只是不知道如何自动获取摘要的挑战响应行为。如果我设置HTTPAUTH为CURLAUTH_BASIC它对内容进行编码,我会使用 VERBOSE 选项看到包含authorization = basic. 摘要没有标题。
你知道我该怎么做吗,或者你能给我举个例子吗?我真的到处找。