- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我找到了一个 lisp 程序。它有效,但也不完全是我需要它的方式。它的输出是这样的:
2323232323235ve3
2323232323235ve4
2323232323235ve5
2323232323235ve6
我需要制作一个单词列表,其中单词长度为 16 个字符,使用 Base32 字符,单词中不包含重复字符。然后我需要将 .txt
添加到单词中。
asdfjklwert7csui.txt
jcfklinesftw8se3.txt
然后我需要对单词进行 SHA512 并根据已知哈希值进行检查。
是否可以只输出匹配已知哈希值的单词?
这是 LISP 源代码
#!/usr/bin/clisp
(defparameter *character-set* "234567abcdefghijklmnopqrstuvwxyz")
;(defparameter *character-set* "ABC") ; < --- this line is for testing
(defparameter *word-length* 16)
;(defparameter *word-length* 4) ; < --- this line is for testing
(defparameter *character-list*
(coerce *character-set* 'list))
(defun final-char (in-string)
(cond
((> (length in-string) 0)
(elt in-string (1- (length in-string))))
(t
nil)))
(defun new-char-list (in-string)
(let ((result))
(mapcar
(lambda (candidate)
(cond
((not (eql candidate (final-char in-string)))
(push candidate result))))
*character-list*)
(nreverse result))
)
(defun extend-string (in-string desired-length)
(mapcar
(lambda (new-char)
(let ((new-string (concatenate 'string in-string (string new-char))))
(cond
((> (length new-string) desired-length))
((>= (length new-string) desired-length)
(format t "~a~%" new-string))
(t
(extend-string new-string desired-length)))))
(new-char-list in-string)))
(extend-string "" *word-length*)
Bash 脚本输出到文件,看起来像。我需要小写的输出。
K5SMKLK5W85T6GTC
RZJRNV0VO1LVIMEM
RPSW59OPQLUBJKC5
这是 Bash 脚本
#!/bin/bash
ascii=
index=0
noNames=16 #No of names to generate
nameLength=10 #Length to generate (you said 10)
for(( i=65; i<=90; i++ )) #Add upper-case letters to 'ascii'
do
ascii[$index]=$(echo $i | awk '{printf("%c",$1)}')
index=$(( $index + 1 ))
done
for(( i=48; i<=57; i++ )) # Add numbers to 'ascii'
do
ascii[$index]=$(echo $i | awk '{printf("%c",$1)}')
index=$(( $index + 1))
done
for(( i=0; i<$noNames; i++))
do
name= #We'll store the name in here
last= #We'll store the index of the last
# character generated here
for(( j=0; j<$nameLength; j++))
do
num=$(( $RANDOM % $index )) # Pick a random character index
while [[ $num -eq $last ]] #If it's the same as the last
# one...
do
num=$(( $RANDOM % $index )) #... pick a new one!
done
last=$num #Update "last" to current value
name=${name}${ascii[$num]} #Add the correct letter to our name
done
echo "${name}" #Print name...
done > output #...to our output file
最佳答案
这是使用 SBCL 测试的 Common Lisp 答案。由于您需要计算哈希值,因此我将使用名为 Ironclad 的外部库。为了安装它,首先 Install Quicklisp。然后:
(ql:quickload :ironclad)
这部分可以定制:
(defparameter *character-set* "234567abcdefghijklmnopqrstuvwxyz")
(defparameter *suffix* ".txt")
现在,我们将映射所有符合您的约束条件的可能字符串(没有相同的连续字符)。我们还将把这些字符串作为字节来操作,因为 Ironclad 仅从字节向量计算散列。不需要分配那么多字符串,只是一遍又一遍地重复使用同一个缓冲区:
(defun make-buffer (size)
(concatenate '(vector (unsigned-byte 8))
(make-array size :element-type '(unsigned-byte 8))
(ironclad:ascii-string-to-byte-array *suffix*)))
上面分配了所需的字节向量,考虑到后缀,转换为字节。下面,我们将对字符集执行相同的操作,它也被强制转换为列表(以便能够使用 DOLIST
):
(defun make-character-set ()
(coerce (ironclad:ascii-string-to-byte-array *character-set*)
'list))
我们还希望能够将哈希字符串转换为字节向量,但也可以直接接受向量。以下函数确保将给定值转换为所需类型:
(defun ensure-hash (hash-designator)
(etypecase hash-designator
(string (ironclad:hex-string-to-byte-array hash-designator))
(vector (coerce hash-designator '(vector (unsigned-byte 8))))))
现在,我们可以找到给定一组生成的单词的散列。 SIZE
参数表示后缀之前有多少个字符,HASH-DESIGNATOR
是十六进制表示的字符串,或字节向量:
(defun find-hash (size hash-designator)
(let ((hash (ensure-hash hash-designator))
(buffer (make-buffer size))
(character-set (make-character-set)))
(labels ((level (depth forbidden)
(cond
((>= depth size)
(when (equalp hash (ironclad:digest-sequence
'ironclad:sha512 buffer))
(return-from find-hash
(values (map 'string #'code-char buffer)
buffer))))
(t (let ((next (1+ depth)))
(dolist (c character-set)
(unless (= c forbidden)
(setf (aref buffer depth) c)
(level next c))))))))
(level 0 0))))
局部level
函数的一般情况是根据字符集设置buffer中depth
位置的字符,忽略禁止字符,即最后一个被设置(或最初为零)。当 level
达到 size
时,我们将单词作为字节向量存储在缓冲区中。在这种情况下,我们对该词进行哈希处理并将其与所需的哈希值进行比较。如果匹配,我们将字节数组(字符代码)转换为字符串,并返回内部缓冲区(它已经计算好了,也许可以重用)。
(find-hash 3 "ddd2379f9a1adf4f0afa0befafdb070fb942d4d4e0331a31d43494149307221e5e699da2a08f59144b0ed415dea6f920cf3dab8ca0b740d874564d83b9b6f815")
=> "zyc.txt"
#(122 121 99 46 116 120 116)
然而,由于指数级的复杂性,该任务对于 16 个字符来说是不切实际的:
> (time (find-hash 4 #(0)))
Evaluation took:
1.679 seconds of real time
1.676000 seconds of total run time (1.672000 user, 0.004000 system)
[ Run times consist of 0.028 seconds GC time, and 1.648 seconds non-GC time. ]
99.82% CPU
4,019,832,288 processor cycles
899,920,096 bytes consed
NIL
> (time (find-hash 5 #(0)))
Evaluation took:
51.768 seconds of real time
51.796000 seconds of total run time (51.684000 user, 0.112000 system)
[ Run times consist of 0.952 seconds GC time, and 50.844 seconds non-GC time. ]
100.05% CPU
123,956,130,558 processor cycles
27,897,672,624 bytes consed
关于用于生成具有非重复字符的单词列表的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48976038/
在 Windows 世界中,什么是正确的名称。具有导出函数的老式 C++ DLL?不是 COM DLL,也不是 .NET DLL。我们以前通过调用 LoadLibrary() 和 GetProcAdd
目前我正在使用javaEE7,我有一个场景如下。在我的 JSF Web 应用程序中,我有一个事件监听器(不是 JSF 事件),当事件调用时,它会执行某些操作,然后将这些信息更新到我的 Web 应用程序
这不是 AJAX 请求/响应回调问题... 我正在使用 Dojo 1.5 构建网格。我正在尝试 dojo.connect具有功能的扩展/收缩按钮。我的问题是 grid.startup()在创建实际 D
非 Webkit Opera 是 very specific在某些功能中,因此通常通过 JavaScript 检测到 the following way . 但是,Opera Next 几乎是 Goo
我已查看以下链接中给出的所有日志,但未能找到 IP 地址: https://developer.couchbase.com/documentation/server/3.x/admin/Misc/Tr
我有一个命令行程序,它根据一组源文件生成一个我想在我的 Android gradle 构建 (A) 中使用的 jar 文件。这个命令行程序只是将一个 jar 文件存储在磁盘上的一个目录中。 我如何创建
下面的 htaccess 命令将所有非 www 转移到 http www RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^
我正在使用自定义链接器脚本将内核镜像分为两部分。第一个是普通代码和数据,第二个是初始化代码和不再需要时将被丢弃的数据。初始化部分也不像内核本身那样在地址空间之间共享,因此如果 fork() 仍然存在(
这个问题在这里已经有了答案: Several unary operators in C and C++ (3 个答案) What is the "-->" operator in C++? (29
假设我有一个类设置如下: class A { public: virtual void foo() { printf("default implementation\n"); } }; c
#include using namespace std; int main(int argc, char *argv[]) { int i=-5; while(~(i)) {
近期,百度搜索引擎变化无常,很多企业站、行业站、门户站、论坛等站点遭到了降权,特别是比比贴分类信息网直接遭到了拔毛,这对于广大站长来说是一种打击,也是各个企业、行业的打击。 至今,很多网站已经恢复
我现在正在使用 IBM TPM v1332 + IBM TSS v1470 并尝试将一些基本关键字/密码存储到 TPM 上的非 volatile 内存中。我找到了两种方法。一种是创建一个密封对象并使用
我的 PHP 脚本中有一个正则表达式,如下所示: /(\b$term|$term\b)(?!([^)/iu 这与 $term 中包含的单词匹配,只要前后有单词边界并且它不在 HTML 标记内即可。 但
我想显示用户名称地址(请参阅 www.ipchicken.com ),但我唯一能找到的是 IP 地址。我尝试了反向查找,但也没有用: IPAddress ip = IPAddress.Parse(th
只有 UI 线程能够显示到屏幕上,还是其他线程也可以这样做? 最佳答案 不,您只能直接从 UI 线程访问 UI,但您可以编码来自其他线程的结果,例如使用 Control.Invoke 或 contro
我正在使用现代 Excel 滚动条(不是旧的 ActiveX 类型,即开发人员 > 插入 > 表单控件 > 滚动条)并且想检测它的值何时更改。我找不到有关此类对象的更改事件的任何信息。您可以在单击时分
当我使用这段代码时 IE 6 确实正确使用了指定的样式表,但所有其他浏览器在应该使用基本上声明的样式表时会忽略这两种样式表,如果您不是 IE,请使用此样式表。 有什么想法吗? 最佳答案 n
我想指定 2 mssql 表之间的关系。 付款类别和付款。 paymentcategory.id 加入 payout.category 列。 在 payout.json 模型中 我指定为外键:id,
我正在尝试制作非 volatile UDF,但似乎不可能。因此,这是我非常简单的test-UDF: Option Explicit Dim i As Integer Sub Main() i = 0
我是一名优秀的程序员,十分优秀!