Estou pesquisando sobre como criar um chave a partir de um algoritmo especificono, neste caso o DES. Quero criar a chave passando uma string para ele . Assim ele cria a chave a partir desta string…
Será que alguem pode me dar uma luz?
Cara, se eu entendi bem, vc que pegar uma string e transformá-la em inteiro, é isso?
Bem, se for isso vc pode estar convertendo
intchave=Integer.parseInt(SuaString);
Espero ter ajudado…
M
maicon_bPJ
lgferst, qual é exatamente a sua dúvida ?
Você quer desenvolver para uso acadêmico ? SDES ou DES mesmo.
Você quer apresentar os valores em binário ou texto mesmo?
Abraço,
Maicon
L
lgferstPJ
Poh galera valew pela atenção…
Seguinte…
Estou querendo criptografar algumas coisas…tipo senha…
Então quando eu uso a classe Cipher ela me pede uma chave para criptografar algo…ateh ai tudo bem…
Mas eu quero gerar esta chave…
Por exemplo…quero gerar esta chave a partir de uma string usando o algoritmo DES mesmo
escrevo uma palavra de 8 bits e ele gera uma chave para mim depois utiliza-la para criptografar o que eu quiser…
Não sei se consegui passar minha ideia para vcs…
M
maicon_bPJ
lgferst, deixa-me entender uma coisa.
Vc quer utilizar o DES ? Ele requer uma chave de 56bits e encripta textos de 64bits, o SDES sim que tem chave de 10bits e encripta texto de 8bits.
Agora eu pergunto novamente é o DES ou SDES que queres utilizar ?
Hah, o algoritmo DES é de criptografia e não de geração de chave !
Explique melhor seu problema…
Mas tem um porem ai e é nisso que eu estou me quebrando
Para gerar a chave ele usa um numero randomico ou seja, se eu perder a chave por exemplo…mas tenho o texto que eu usei para gerar a chave…
Se eu mandar gerar a chave de novo ele vai gerar uma outra chave pois as chances de ele usar o mesmo numero randomico são muito pequenas
Ou seja…eu tenho uma string e quero que sempre quando eu mande gerar a chave o valor seja igual…
Nestes links que tu me passou…se eu rodo uma vez ele gera uma chave…se rodo mais uma vez ele gera outra com outro valor…
Eh nisso que eu estou me quebrando…
Valew pela atenção
Positive Vibrations
M
maicon_bPJ
É o seguinte: o DES tem esta caracteristica, se vc tirar isso já não vai ser mais DES… :lol:
-> Mas se quiser gerar sempre a mesma chave não vais ter tanta segurança, mas se vc quiser assim, você terá q substituir os random´s por valores fixos… pronto !
Abraço,
Maicon
H
hipersoftPJ
“lgferst”:
Bom Dia!
Estou pesquisando sobre como criar um chave a partir de um algoritmo especificono, neste caso o DES. Quero criar a chave passando uma string para ele . Assim ele cria a chave a partir desta string…
Será que alguem pode me dar uma luz?
Positive Vibrations
Lucas Ferst
As funções hash seguras têm essa propriedade. A cifra MD5 é a mais usada.
importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;/** * Encodes a string using MD5 hashing */publicclassMD5{/** * Encodes a string * * @param str String to encode * @return Encoded String * @throws NoSuchAlgorithmException */publicstaticStringcrypt(Stringstr)throwsNoSuchAlgorithmException{if(str==null||str.length()==0)thrownewIllegalArgumentException("String to encript cannot be null or zero length");MessageDigestmd=MessageDigest.getInstance("MD5");md.update(str.getBytes());byte[]hash=md.digest();StringBufferhexString=newStringBuffer();for(inti=0;i<hash.length;i++){if((0xff&hash[i])<0x10)hexString.append("0"+Integer.toHexString((0xFF&hash[i])));elsehexString.append(Integer.toHexString(0xFF&hash[i]));}returnhexString.toString();}}
M
maviPJ
Isso deve funcionar:
importjava.security.*;importjavax.crypto.*;importjavax.crypto.spec.*;publicclassEncrypt{/** * Inicializa a classe Encrypt * @param encoded A variável contendo os valores a serem encriptados em DES no modo ECB e com padding PKCS5 * @param key A chave utilizada na encryptação */Stringkey;Stringencoded;Encrypt(Stringencoded,Stringkey){this.key=key;this.encoded=encoded;}byte[]decrypt()throwsException{byte[]toEncode=encoded.getBytes();ProvidersunJce=newcom.sun.crypto.provider.SunJCE();Security.addProvider(sunJce);SecretKeyFactorykeyFac;Ciphercipher;SecretKeysecretKey;DESKeySpeckeySpec;keySpec=newDESKeySpec(key.getBytes());keyFac=SecretKeyFactory.getInstance("DES");secretKey=keyFac.generateSecret(keySpec);cipher=Cipher.getInstance("DES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE,secretKey);returncipher.doFinal(toEncode);}}
Era minha classe de decrypt, mudei pra encrypt agora pra voce e nao testei, talvez tenha algum erro de nome de variavel/metodo ou algo assim só, mas essa é a lógica…