You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Crunch生成无重复字符的16位混合字符词表

实现Crunch实时生成无重复字符的16位词表并验证

我需要用Crunch自带的mixalpha-numeric-all字符集(路径为/usr/share/crunch/charset.lst)生成16位且每个字符仅出现一次的词表。

尝试过的命令及问题

执行以下命令后,生成的结果仍存在重复字符(例如abababab...),不符合每个字符唯一的要求:

crunch 16 16 -f /usr/share/crunch/charset.lst mixalpha-numeric-all -d 1@,%^

验证脚本

我尝试用sed处理无效,于是编写了以下bash脚本,用于验证单词是否存在重复字符:

#!/usr/bin/env bash

word=$1
char_count=0
word_length=${#word}

function log {
  echo $1 >> log.txt 
} 

log "待验证单词: $word"
log "单词长度: $word_length"

# 返回值: 0 = 无重复字符, 1 = 存在重复字符
function checkRepetition {    
   # 允许1次重复(对应字符自身的位置)
    local rep=0

    for (( j=0; j<$word_length; j++ )); do
    
    local char=${word:$j:1}
    
    log "对比字符串中位置 $j 的字符为: $char"

    if [ "$1" = "$char" ]; then
        let "rep++"
    fi
    if [ $rep -eq 2 ]; then
        echo "字符 '$char' 重复出现。"            
        return 1
    fi

done

return 0
}

for (( i=0; i<$word_length; i++ )); do

   char_to_compare=${word:$i:1}

    log "待对比的位置 $i 的字符为: $char_to_compare"

    checkRepetition "$char_to_compare"

    if [ $? -eq 0 ]; then
      echo "当前单词暂时有效"
      let "char_count++"
      echo "检查下一个位置..."
    else
      echo "单词存在重复字符,无效"
      break 
    fi

done

if [ $char_count -eq $word_length ]; then
   echo "单词有效。"
   echo "添加到文件中。"
   echo "$word" >> wordlist.txt
fi

当前困境

目前无法让Crunch直接将生成的每个单词传递给上述脚本进行处理,必须先将Crunch的输出保存到文件后再处理,求可行的解决方案。


内容的提问来源于stack exchange,提问作者Infofly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:25:08