小编tre*_*ell的帖子

散列时哪些Unicode规范化(和其他处理)适用于密码?

如果我接受完整的Unicode密码,我应该如何在将字符串传递给哈希函数之前对其进行规范化?

目标

如果没有规范化,如果有人ma\u00F1ana在一台计算机上将其密码设置为"mañana"()并尝试使用ma\u006E\u0303ana另一台计算机上的"mañana"()登录,则哈希将不同,登录将失败.这受用户代理或其操作系统的控制.

  • 我想确保那些哈希到同一个东西.
  • 我并不关心Α,А和A(希腊语,西里尔语,拉丁语)等同性字.

参考

Unicode规范化形式:http://unicode.org/reports/tr15/#Norm_Forms

注意事项

  • 任何标准化过程都可能导致冲突,例如"o?ce" == "office".
  • 规范化可以改变字符串中的字节数.

进一步的问题

  • 如果服务器收到的字节序列不是UTF-8(或其他格式),会发生什么?拒绝,因为它不能正常化?
  • 如果服务器收到其Unicode版本中未分配的字符会发生什么?

passwords unicode password-storage unicode-normalization homoglyph

16
推荐指数
1
解决办法
1323
查看次数

如何限制SPARQL查询中特定变量的结果数?

假设我有一个像这样的SPARQL查询,寻找具有焦点资源的一些共享属性的资源,并且还获得关于焦点资源的一些其他陈述:

CONSTRUCT {
  ?focal pred:icate ?shared .
  ?other pred:icate ?shared .
}
WHERE {
  ?focal pred:icate ?shared ;
         more:info ?etc ;
         a "foobar" .
  ?other pred:icate ?shared .
}
LIMIT 500
Run Code Online (Sandbox Code Playgroud)

如果有超过500个其他资源,LIMIT可能会排除该more:info语句和对象.那么,有没有办法说"我只想要最多500个?other",或者我是否必须将此查询分成多个部分?

query-optimization sparql

9
推荐指数
1
解决办法
8056
查看次数

与语言无关的正确选择Linux的代码编辑器?

我需要一个Linux文本编辑器来取代Textpad 4.7.3(一个Windows nagware应用程序),但我尝试过的所有替代品都是膨胀或不完整的.以下是我发现最重要的功能,按降序排列:

  • 正则表达式搜索,标记和替换(所有打开的文件,甚至),目录树中的正则表达式搜索
  • 带有适当键盘快捷键的选项卡式编辑器([ctrl] + [tab]应与[alt] + [tab] 完全相同的型号)
  • 自动缩进,缩进保留和缩进操作(制表符,shift-tab)
  • 智能导航键:[home]在行开始和非空白开始之间切换,[F2]寻找下一个书签,点击向上和向下箭头键将您带到上次导航的列,而不是您上次键入的位置(我认为Textpad是我见过的唯一一个地方)
  • 语法高亮(奖励:混合语言突出显示,TextPad缺少)
  • 阻止选择模式
  • 从程序(例如编译器)运行用户定义的命令,具有交互式命令结果(Textpad将允许您定义正则表达式以匹配文件名和行号,因此您可以双击错误并将其转到该文件中的该行.)
  • 工作区(要同时打开的文件集合)

这是我在编辑中发现的令人厌恶的事情:

  • Vim和emacs 没有充分利用我的屏幕,鼠标和键盘.此外,还有一个学习曲线 - 你必须学习一种全新的键盘交互方式.(当然,如果他们拥有我想要的一切,我会学到它们.)
  • Gedit几乎是完美的,但它(就像大多数人一样)有蹩脚的标签,这是无法容忍的
  • Eclipse是一个怪物,除非我在做Java,否则我不会触摸它
  • 正则表达式的能力非常罕见
  • 几乎没有什么是最后看到的标签遍历
  • 我没有看到有关last-navigation-column光标遍历的任何内容.(一旦我开始使用它,我发现我不能没有.)

我没有时间或具备建立我的"理想编辑器"所需的具体知识,所以我希望那些在编辑中具有同样品味的人可能偶然发现了一个宝石.

ETA:请不要推荐您未亲自使用的编辑器.我听说过SciTE,Eclipse,gedit,medit,nedit,GVim,Gemacs,Kate,Geany,Gnotepad,ozeditor等等.我敢肯定他们中的大多数都有我提到的一些功能.如果您不确定它是否具有基本功能(例如ctrl-tab的工作方式与alt-tab相同),那么您实际上并没有帮助,是吗?

linux editor

6
推荐指数
3
解决办法
1150
查看次数

将javax.mail.internet.MimeMessage发送给具有非ASCII名称的收件人?

我正在编写一段需要向非ASCII名称用户发送邮件的Java代码.我已经弄清楚如何使用UTF-8作为正文,主题行和通用标题,但我仍然坚持收件人.

这是我在"To:"字段中想要的内容:"????????????" <foo@example.com>.它(在我们今天的目的)生活在一个名为String的字符串中recip.

  • msg.addRecipients(MimeMessage.RecipientType.TO, recip)"?????S]" <foo@example.com>
  • msg.addHeader("To", MimeUtility.encodeText(recip, "utf-8", "B"))AddressException: Local address contains control or whitespace in string ``=?utf-8?B?IuOCpuOCo+OCreODmuODh+OCo+OCouOBq+OCiOOBhuOBk+OBnSIgPA==?= =?utf-8?B?Zm9vQGV4YW1wbGUuY29tPg==?=''

我该怎么发送这条消息呢?


这是我处理其他组件的方式:

  • 正文HTML: msg.setText(body, "UTF-8", "html");
  • 头: msg.addHeader(name, MimeUtility.encodeText(value, "utf-8", "B"));
  • 学科: msg.setSubject(subject, "utf-8");

java email unicode mime header

5
推荐指数
1
解决办法
5026
查看次数

如果我删除所有对我已订阅的可观察对象的显式引用,它是否会被垃圾收集?

我有一个可以从远程服务器发出响应的observable.我订阅了一个将结果填入缓存的操作.

  • 一旦我对原始观察者的所有明确引用都消失了,上面提到的副作用行为是否会失败?
  • 更一般地说,作为垃圾收集和rxjava的rxjava用户,我需要知道什么?

奖励:这是一个clojure实验,展示了在订阅者的情况下观察到的可观察性,或者它可能只显示了订阅可观察者的副作用.

(ns adhoc.rx-gc
  "Testing behavior of RxJava and garbage collection."
  (:require [rx.lang.clojure.core :as rx])
  (:import (java.lang.ref WeakReference)
           (java.util.concurrent TimeUnit)
           (rx Observable)))

(defn test-gc
  [sub?]
  ;; Hold source in an atom to be sure we can wipe references to it
  ;; and not worry about lexical scope.
  (let [a-src (atom (.delay (rx/return "hello") 5 TimeUnit/SECONDS))
        w-src (WeakReference. @a-src)]
    (when sub?
      (rx/subscribe @a-src
                    #(do (println "Value:" %)
                         (println "On-update ref:" (.get w-src)))))
    (reset! a-src nil)
    (System/gc)
    (println "After-gc ref:" …
Run Code Online (Sandbox Code Playgroud)

garbage-collection rx-java

5
推荐指数
1
解决办法
463
查看次数