XOR au niveau du bit d'une chaîne en Bash

Je suis en train d'accomplir un travail dans les scripts Bash. J'ai une chaîne qui je veux XOR avec ma clé.

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH

teststring="abcdefghijklmnopqr"

Maintenant, comment puis-je XOR la valeur de chaîne de test et de le stocker dans une variable à l'aide de bash?

Toute aide sera appréciée.

Fondamentalement, je suis en train d'essayer de reproduire le résultat de follwing VB Script:

Function XOREncryption(CodeKey, DataIn)

Dim lonDataPtr
Dim strDataOut
Dim temp
Dim tempstring
Dim intXOrValue1
Dim intXOrValue2


For lonDataPtr = 1 To Len(DataIn) Step 1
    'The first value to be XOr-ed comes from the data to be encrypted
    intXOrValue1 = Asc(Mid(DataIn, lonDataPtr, 1))
    'The second value comes from the code key
    intXOrValue2 = Asc(Mid(CodeKey, ((lonDataPtr Mod Len(CodeKey)) + 1), 1))

    temp = (intXOrValue1 Xor intXOrValue2)
    tempstring = Hex(temp)
    If Len(tempstring) = 1 Then tempstring = "0" & tempstring

    strDataOut = strDataOut + tempstring
Next
XOREncryption = strDataOut
End Function
Ne serait-il pas juste être teststring="abcdefghijklmnopqr" ^ key?
dosen';t de travail
peut-être que si il ya une manière de passer la valeur de chaîne de test en perl à partir de script bash et XOR.
Il semble que votre essayer de faire une sorte de mot de passe de dissimulation ou de chiffrement dans bash. Perl ou python serait probablement un meilleur choix de la langue.
il semble qu'il ne peut pas être fait de demeurer tous en bash.. donc peut-être que vous devez vous en tenir à perl, ou utiliser quelque chose de plus léger que l'interprète d'une langue; par exemple, od et sed pourrait être utilisé, par exemple: echo $(( $(echo -n "c" |od -td1 |sed -e 's/^[0-9]\+ *//g;') ^ 1 )); mettez votre char au lieu de "c"... ce qui est préférable si vous faites cela comme une fonction, alors vous pouvez diviser char par char la chaîne et appliquer le xor (peut-être xorring char par char n'était pas ce que tu voulais...; si vous avez besoin d'xorring deux mêmes chaînes de longueur, vous pouvez séparer les deux et de "construire" le résultat; sinon chaîne ^ entier ... que voulez-vous dire?

OriginalL'auteur ricky2002 | 2010-06-02