我经常使用这个哈希函数,即记录数据帧的值.想看看我是否能打破它.为什么这些哈希值不相同?
这需要摘要包.
纯文本输出:
> digest(Inf-Inf)
[1] "0d59b2dae9351c1ce6c76133295322d7"
> digest(NaN)
[1] "4e9653ddf814f0d16b72624aeb85bc20"
> digest(1)
[1] "6717f2823d3202449301145073ab8719"
> digest(1 + 0)
[1] "6717f2823d3202449301145073ab8719"
> digest(5)
[1] "5e338704a8e069ebd8b38ca71991cf94"
> digest(sum(1, 1, 1, 1, 1))
[1] "5e338704a8e069ebd8b38ca71991cf94"
> digest(1^0)
[1] "6717f2823d3202449301145073ab8719"
> 1^0
[1] 1
> digest(1)
[1] "6717f2823d3202449301145073ab8719"
Run Code Online (Sandbox Code Playgroud)
额外的怪异.等于NaN的计算具有相同的哈希值,但NaN的哈希值不等效:
> Inf - Inf
[1] NaN
> 0/0
[1] NaN
> digest(Inf - Inf)
[1] "0d59b2dae9351c1ce6c76133295322d7"
> digest(0/0)
[1] "0d59b2dae9351c1ce6c76133295322d7"
> digest(NaN)
[1] "4e9653ddf814f0d16b72624aeb85bc20"
Run Code Online (Sandbox Code Playgroud) SHA384是SHA512的截断版本.但为什么有人会用呢?并且推论:如果SHA384与SHA512一样好,那么使用512位版本有什么理由吗?
我打算使用其中一种算法来验证文件的完整性,所以我主要对colision安全感兴趣.
我很高兴听到任何人在实践中如何使用SHA2摘要,为什么你会选择一个版本而不是另一个版本.
WebRequest request = HttpWebRequest.Create(url);
var credentialCache = new CredentialCache();
credentialCache.Add(
new Uri(url), // request url
"Digest", // authentication type
new NetworkCredential("user", "password") // credentials
);
request.Credentials = credentialCache;
Run Code Online (Sandbox Code Playgroud)
但是,这仅适用于没有URL参数的URL.例如,我可以下载http://example.com/test/xyz.html
得很好,但是当我尝试下载时http://example.com/test?page=xyz
,结果是400 Bad Request消息,服务器日志中包含以下内容(运行Apache 2.2):
Digest: uri mismatch - </test> does not match request-uri </test?page=xyz>
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是摘要规范要求从摘要哈希中删除URL参数 - 但是从传递给的URL中删除参数credentialCache.Add()
并没有改变事物.所以它必须是相反的方式,在.NET框架中的某个地方错误地从URL中删除参数.
有没有办法推迟或推迟摘要的发生?
我想对模型进行一些更改但我不希望在对模型进行所有更改之前触发摘要.模型上的一些对象具有更新模型上其他对象以进行更改的观察者.
理想情况下我想
$ digest将找到所有脏对象并激活观察者.
对此的另一个解决方案是,而不是停止$ digest我可以
添加观察者后,我需要运行观察者方法以确保模型处于正确状态.
我觉得第二个选项看起来像是一个黑客.
想法?
在rails 4中,我的image_tag("assets/logo.png")没有链接到带有摘要的文件,资产也被预编译了它们在public/assets/*中的图像.
我的production.rb:
Books::Application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# Code is not reloaded between requests.
config.cache_classes = true
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both thread web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
# Full error reports are disabled and caching …
Run Code Online (Sandbox Code Playgroud) 我想在页面加载时使用角度触发css动画.有没有办法计算角度的消化周期,例如控制器或指令?
我有一些角度动画,我想在页面加载时运行,使用ng-enter,ng-leave,ng-move等...使用ng-repeat指令.
从1.3.6开始,我知道角度等待应用任何动画,直到2个摘要周期发生,所以这些动画根本不会发生,因为数据(几乎总是)加载到我的第一个摘要周期的视图中应用.(酱:https://docs.angularjs.org/api/ngAnimate#css-staggering-animations)
我想知道是否有一些方法可以计算摘要周期并触发动画,或者在第二个摘要周期后加载数据?
此外,如果我等到2个摘要周期,是否有可能在某些情况下第二个周期不会发生,这意味着我的数据不会加载到视图中?如果是这种情况,有没有办法可以保证每次至少会发生2个消化周期?
作为临时修复,我使用$ timeout在500ms后加载我的数据,但我知道这是一个非常糟糕的主意.
(由于该项目的NDA,改变了某些事物的名称)
<div ng-repeat="pizza in pizzas" class="za" ng-click="bake(pizza)"></div>
Run Code Online (Sandbox Code Playgroud)
.za {
//other styles
&.ng-enter,
&.ng-leave,
&.ng-move {
transition: all 1s $slowOut;
transform: translate(1000px, 0px) rotateZ(90deg);
}
&.ng-enter,
&.ng-leave.ng-leave-active
&.ng-move, {
transform: translate(1000px, 0px) rotateZ(90deg);
}
&.ng-enter.ng-enter-active,
&.ng-leave,
&.ng-move.ng-move-active {
transform: translate(0, 0) rotateZ(0deg);
}
&.ng-enter-stagger,
&.ng-leave-stagger,
&.ng-move-stagger {
transition-delay: 2s;
transition-duration: 0s;
}
}
Run Code Online (Sandbox Code Playgroud)
// inside a controller
timeout(function() {
scope.pizza = [ // actually …
Run Code Online (Sandbox Code Playgroud) 我想将HTTP摘要式身份验证与存储用户名和加密密码的中央数据库一起使用.这些数据应该由不同的服务器使用,例如Apache httpd或Tomcat.客户端将是人类,浏览器和其他应用程序以RESTful方式进行通信.
据我所知,我无法使用带有散列密码的表.只能存储 HA1 = MD5(用户名:域名:密码),其中需要明文密码 - 对吗?
另一方面,似乎可以在Apache httpd中使用散列密码:
查询语句返回的第一行的第一列值应该是包含加密密码的字符串.
它是否适用于摘要式身份验证?没有参数来指定哈希算法.Apache httpd如何决定使用哪种算法?
RFC 2617说:
4.13存储密码
摘要式身份验证要求身份验证代理(通常是服务器)将从用户名和密码派生的一些数据存储在与给定领域关联的"密码文件"中.通常,这可能包含由用户名和H(A1)组成的对,其中H(A1)是如上所述的用户名,领域和密码的消化值.
听起来密码必须是明文.
Servlet 3.0规范说:
虽然密码不是通过线路发送的,但HTTP摘要身份验证要求对验证容器提供明文密码等效,以便它可以通过计算预期的摘要来验证收到的验证者.
这里的"明文密码等价"是什么?密码哈希?
Tomcat文档说:
如果使用带有DIGEST身份验证的消化密码,则用于生成摘要的明文不同.在上面的示例中,{cleartext-password}必须替换为{username}:{realm}:{cleartext-password}.例如,在开发环境中,这可能采用testUser:localhost:8080:testPassword的形式.
这是一个需要明文密码.
那么,HTTP摘要身份验证是否可以与已加密的密码一起使用,或者密码是否为明文?
如果用户请求来自其他子域的页面,用户是否必须重新输入其凭据?
选项卡关闭时或仅当整个选项卡关闭时,浏览器是否会删除缓存的密码?也许这在浏览器与浏览器之间有所不同 - 我对哪个浏览器删除它以及保留它有兴趣.
总体问题是,摘要式身份验证是否适用于具有已加密密码的中央用户数据库的情况.或者我应该更好地使用基于会话的单点登录服务?
我对RoR比较陌生,我很好奇为什么Rails在有和没有md5哈希生产的情况下编译资产?
我跑bundle exec rake assets:clean
那么bundle exec rake assets:precompile
我的production.rb文件:
MyApp::Application.configure do
# Code is not reloaded between requests
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false …
Run Code Online (Sandbox Code Playgroud) 在我的AngularJS应用程序中,有几点我想等待$ scope处理到DOM中,然后在其上运行一些代码,例如jquery fadeIn.
有没有办法监听某种digestComplete消息?
我当前的方法是,在设置我想要呈现的任何$ scope变量之后立即使用延迟为0 ms的setTimeout,这样它将让范围完成消化,然后运行完美的代码.唯一的问题是,我偶尔会在setTimeout返回之前看到DOM渲染.我想要一种方法,保证在摘要之后和渲染之前触发.有任何想法吗?
如何让我的bottle.py应用程序(在Paste或Cherrypy中运行)进行HTTP(基本或摘要)身份验证? - 我需要保护它,但无法找到任何HOWTO.