Pesquisar na Comunidade
Mostrando resultados para as tags ''criptografia''.
Encontrado 19 registros
-
Escrever um programa, em linguagem C, que permita decifrar um determinado texto, escrito em língua portuguesa e que foi cifrado por um método de substituição mono-alfabético. A tarefa será executada sem se conhecer a chave de substituição que deu origem ao texto cifrado. A técnica para realizar o ataque tem como base a análise estatística dos caracteres da língua portuguesa. Por exemplo, o carácter que aparece mais vezes num texto de língua portuguesa é o a. Então, o símbolo que aparecer mais vezes na mensagem cifrada terá que corresponder ao original a. O segundo símbolo com maior frequência é o e e pela mesma lógica o símbolo com a segunda maior taxa de ocorrência na mensagem cifrada corresponderá à letra original e. Para que este método de ataque funcione, o texto a decifrar terá que ser suficientemente longo. O texto a decifrar:cscmxcszfsocmfzscssjncwcgfspezgcfkjgznvcwbmcjcwesjvcncbfmxcmzsnenkcgzcnvzsncazicgfsbcsscmcxcjngccwzxgcvcbmfocnczxbzmjifsziezmmcszsrfmkcgfsxcjsgfpezbmfxzvjccrfmkchexcnczznvmziznvzmzxfvczgjrjkcmcxnfafmzjnfpezvcnvfseowjxcmcxzvcxozxcsxzxfmjcsiwfmjfscsgcpezwzsmzjspezrfmcxgjwcvcngfcrzfjxbzmjfzcsvzmmcsajkjfscsgzcrmjkczgzcsjccngcmcxgzacsvcngfzcpezwzspezbfmfomcsacwzmfscsszacfgcwzjgcxfmvzwjozmvcngfkcnvcngfzsbcwhcmzjbfmvfgcbcmvzszcvcnvfxzcyegcmfzniznhfzcmvzkzsszxgfscojfimzifzgfvmfjcnfcsncazickfzsimcngzspezrjqzmcxkcwzszgzcwztcngmfzgzvmcycnfcrcxcgcsajvfmjcspezvjazmcxpezzekcnvffbzjvfjwesvmzwesjvcnfcpezxnzbvenfzxcmvzfozgzkzmcxkzsszvegffpezcxesccnvjickcnvcpezfevmfacwfmxcjscwvfszcwzacnvczafsvcijgzsxjnhcsbfjskmjcgfvzngzszxxjexnfafzniznhfcmgznvzszszxbmzzxazmsfhexjwgzkzwzomcgfrfjgzxjafssfmjfcwzmzxznvzgcjxzcifmcexsfxcwvfzseowjxcgfexzsvjwfimcngjwfkfzkfmmznvzbfmpezgzafsscsciecsrzoffmgznzpezncfvznhcxznazyccsgzhjbfkmznzgcjxzecremjcimcngzzsfnfmfsczncfgzcimzsvzcazncfermcevcmegcxcsgzveockcnfmczozwjkfscpezfbzjvfckzngzzckfmcfizsvfxegcgcjxzjiecwkcnvfcfsrzjvfsgcrcxfsciznvzafsscpezcxcmvzvcnvfcyegcpezszzsbcwhzzszkcnvznfenjazmsfszvcfseowjxzbmzkfkcozzxazmsfzafsfozxncskjgcsziemcnkcgcwesjvcnccnvjicwjozmgcgzzncfxznfskzmvjssjxczsbzmcnkcgzcexznvfgcbzpeznckmjsvcngcgzafsfnfafvzxfmgcxcemcwcnkcxcmcajwhcrcvcwgcnfsscjgcgzgcgccfxengfbfmgzespezvfgffxcngzbzmcgfxengfcgzesgcmbcmvzimcngz Tenha em atenção que, para simplificação, o texto fornecido não contém espaços, nem caracteres acentuados, nem caracteres de pontuação. Assim, o programa escrito em linguagem C não deverá apresentar o texto decifrado com espaços, nem com caracteres acentuados e nem com caracteres de pontuação. Para se construir o programa suponha-se que a sequência seguinte apresenta a ordem decrescente (da esquerda para a direita) da frequência dos caracteres na língua portuguesa: a e o s r d n i t m u l c v p g q b f h j x z k y w alguidem poderia me ajudar?
-
Oi, gente.. Sou novo no fórum. Minha dúvida é, sou programador c++ iniciante e gostaria de adicionar uma criptografia em uma dll opensource que eu mexo. Queria fazer com que, se possível, elá já fosse compilada pelo VS 2010 com essa criptografia.. Ou criar um executável para criptografa-la. Há possibilidades?
- 1 resposta
-
- criptografia
- dll
-
(e %d mais)
Tags:
-
Boa noite à todos do fórum. Criei um programa em python que segue a lógica do RSA (gera dois primos grandes, n=multiplicação desses primos, pego um ''e'' tal que mdc(e,phi(n))=1, etc...) . Quando escolho números pequenos (coloquei n=21,p=3,q=7,phi(n)=12,e=5,d=5 por exemplo) eles pegam normalmente... Contudo, quando começo a gerar os números, não consigo descriptografar! Alguém poderia por favor me ajudar? segue o código: import random from random import getrandbits def criptografa(m,u,n): m1=pow(m,u,n) return m1 def euclides_extendido(a, b): lastremainder, remainder = abs(a), abs(b) x, lastx, y, lasty = 0, 1, 1, 0 while remainder: lastremainder, (quotient, remainder) = remainder, divmod(lastremainder, remainder) x, lastx = lastx - quotient * x, x y, lasty = lasty - quotient * y, y return lastremainder, lastx * (-1 if a < 0 else 1), lasty * (-1 if b < 0 else 1) def modinv(a, m): g, x, y = euclides_extendido(a, m) if g != 1: raise ValueError return x % m def phi(p,q): aux = (p - 1) * (q - 1) return aux def mdc(num1, num2): resto = None while resto is not 0: resto = num1 % num2 num1 = num2 num2 = resto return num1 small_primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31] def miller_rabbin(n, k): if n < 2: return False for p in small_primes: if n < p * p: return True if n % p == 0: return False r, s = 0, n - 1 while s % 2 == 0: r += 1 s //= 2 for _ in range(k): a = random.randrange(2, n - 1) x = pow(a, s, n) if x == 1 or x == n - 1: continue for _ in range(r - 1): x = pow(x, 2, n) if x == n - 1: break else: return False return True p = getrandbits ( 512 ) q = getrandbits ( 512 ) while not (miller_rabbin(p,100)==True or miller_rabbin(q,100)==True): p = getrandbits(512) q = getrandbits(512) phi_n=phi(p,q) n=p*q e=2 while not (mdc(e,phi_n)==1): e = random.randint(2, phi_n) d=modinv(e,phi_n) m=55 print(m) m1=criptografa(m,e,n) m=criptografa(m1,d,n) print(e) print((d*e)%phi_n) print(d) print(n) print(m1) print(m) Desde já, grato.
-
- rsa
- criptografia
-
(e %d mais)
Tags:
-
Quando criptografamos uma senha no mysql, (EX: INSERT INTO usuario (id, login, senha) VALUES (NULL,'admin', MD5('xxx')) obviamente a senha se transforma naquele hash. Gostaria de entender como funciona o mecanismo do mysql, pois se dermos um select nos user obviamente vai aparecer a senha criptografada, mas como então o mysql "entende" a senha "xxx" quando um usuário se loga no sistema?
- 1 resposta
-
- criptografia
- mysql
-
(e %d mais)
Tags:
-
Olá a todos Membros do fórum, Sou novo aqui e gostaria de uma ajuda de vocês, vou explicar minha situação Estou com um programa em Visual Basic 6.0 aqui. que tem que ler um determinado arquivo "config.txt" só que esse arquivo vai estar criptografado, e se ele não estiver ele teria que me dar a informação de que não esta criptografado, e me dar a opção de criptografar "a opção de criptografia pode ser opcional, o importante é só informar que não esta criptografado, só isso seria de grande ajuda.", Bom vou mostrar como o código esta. Estou usando uma Classe de Form com o Nome Huffman.cls que é aonde ta o código da codificação e decodificação. Código abaixo 'Codificação de Huffman e Decodificação bolNomeServidor = True Call objHuffman.DecodeFile(App.Path & "\Config.txt", App.Path & "\Config.txt") strNomeServidorEHost = objHuffman.ConfigDescriptografado strNomeServidorEHostLimpo = Empty bolAgoraSoNum = False ContadorHost = 0 'Aqui ele vai verificar se o que esta escrito esta descriptografado e vai compor letra por letra, e virgula até completar o que estará no arquivo.txt se não estiver criptografado que seria o arquivo config.txt For ContadorHost = 1 To Len(Trim(strNomeServidorEHost)) If bolAgoraSoNum = True Then If IsNumeric(Mid(strNomeServidorEHost, ContadorHost, 1)) = False And Mid(strNomeServidorEHost, ContadorHost, 1) <> " " Then Exit For End If End If strNomeServidorEHostLimpo = strNomeServidorEHostLimpo & Mid(strNomeServidorEHost, ContadorHost, 1) If Mid(strNomeServidorEHost, ContadorHost, 1) = "," Then bolAgoraSoNum = True End If Next ContadorHost strNomeServidorEHost = strNomeServidorEHostLimpo 'strNomeServidorEHost = lerPrimeiraLinha(App.Path & "\Config.txt") 'Call Huffman.EncodeFile(App.Path & "\Config.txt", App.Path & "\Config.txt") Set objHuffman = Nothing Agradeço a ajuda de vocês desde já! Só pra lembrar ele teria que verificar se esta criptografado o arquivo config.txt e se não estiver ele teria q criptografar o arquivo config.txt.
-
Boa noite ,galera.Eu tenho que criar uma tabela exibindo os valores do Resto,Quociente, X e Y (para esclarecer ---- O algoritmo Euclidiano Estendido me fornece os valores de X e Y que tornam a igualdade a.X + bY = mdc(a,b) , onde a e b são os valores digitados pelo usuário ) Eu fiz o seguinte:criei 3 pares de variáveis ( e [v] para os valores de X(j-2) e Y(j-2) {X e Y de duas linhas anteriores a atual},respectivamente. e [t] para os valores de X(j-1) e Y(j-1) {X e Y de uma linha anterior a atual},respectivamente. E,por último,[m] e [h] para os valores de Xj e Yj {X e Y da linha atual},respectivamente). Na parte do while(R !=0): ... depois do final do primeiro ciclo,eu começo a ter erro na distribuição das váriáveis. while (R != 0): a = b b = R R = a % b Q = a // b u = m v = h m = s - m*Q h = t - h*Q if (R == 0): print R,Q,"-","-" else: print R,Q,m,h a = b b = R R = a % b Q = a // b s = u t = v m = u - m*Q h = t - h*Q s = m t = h if (R == 0): print R,Q,"-","-" else: print R,Q,m,h print "---" Valores de entrada : a = 294 b = 108 EXEMPLO DE SAÍDA : 78 2 1 -2 30 1 -1 3 18 2 3 -8 12 1 0 0 6 1 3 -8 0 2 - - COMO DEVERIA SER : 78 2 1 -2 30 1 -1 3 18 2 3 -8 12 1 -4 11 6 1 7 -19 mdc(a,b)= mdc(294,108) = 6 0 2 - - Tem algum jeito melhor de fazer esse algoritmo? Com vetores,talvez? Desde já,obrigado!
-
- matematica
- primos
- (e %d mais)
-
Pessoal quero saber a melhor função para criptografar algo e depois descriptografar utilizando alguma chave. Eu ia usar o mcrypt_encrypt() e o mcrypt_decrypt(), entretando quando entrei la no site do PHP tá assim: This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged. Portanto acho que seria melhor utilizar outra função, existe uma parecida com esta? Lembrando que eu vou precisar descriptografar logo preciso de uma chave para isso.
-
Eu tenho um DB mysql que será alimentado por vários sistemas. Eu preciso montar uma Trigger para criptografar antes de inserir e descriptografar antes de exibir os dados. Estou usando aes_encrypt('coluna', 'chave_criptografia_32caracteres'). Tentei algo assim: CREATE OR REPLACE TRIGGER Crypt_Decrypt before insert or update on interditados FOR EACH ROW begin insert into interditado (usuario_id, nome, cpf, nome_pai, nome_mae, data_cadastro) values ( @usuario_id, @nome := aes_encrypt(nome, 'MIICeQIBADANBgkqhkiG9w0BAQEFAASC'), @cpf := aes_encrypt(cpf, 'MIICeQIBADANBgkqhkiG9w0BAQEFAASC'), @nome_pai := aes_encrypt(nome_pai, 'MIICeQIBADANBgkqhkiG9w0BAQEFAASC'), @nome_mae := aes_encrypt(nome_mae, 'MIICeQIBADANBgkqhkiG9w0BAQEFAASC'), now() ) end; Grato.
-
Oi Pessoal, Estou com muita dificuldade para resolução do exercício abaixo: Tarefa: Sua tarefa é escrever um programa que utilize uma tabela de criptografia e permita: Escrever uma mensagem qualquer e exibir a mensagem codificada. Escrever uma mensagem codificada e exibir a mensagem decodificada. Entrada: A entrada de dados será informada pelo usuário, onde: O usuário escolhe se quer codificar ou decodificar a mensagem (1 - Codificar, 2 – Decodificar, 3 - Sair). O usuário informa a mensagem que será codificada ou decodificada, de acordo com a opção escolhida. Saída: O programa deve exibir a mensagem correspondente, de acordo com a opção do usuário Tabela de Criptografia: A tabela de criptografia deve ser carregada de um arquivo txt, onde: A primeira linha do arquivo deverá ter as 26 letras do alfabeto. A segunda linha deverá ter as letras correspondentes codificadas. Restrições e Observações: A tabela do alfabeto e da criptografia não poderão ter letras repetidas repetidos. A tabela deve utilizar apenas letras maiúsculas. Desconsiderar números, letras acentuadas e caracteres especiais. Os espaços utilizados na mensagem devem se manter. O programa deve continuar executando até que o usuário escolha a opção 3 (Sair). O programa deve funcionar com qualquer arquivo txt no padrão especificado acima. O arquivo txt não precisa ser criado pelo seu programa. Você pode criar o arquivo no bloco de notas e salva-lo na pasta do seu projeto. Depois leia esse arquivo. Após ler e carregar as informações do arquivo txt, procure armazenar essas informações em vetores ou matrizes, se necessário. Exemplo: Observe a seguir um exemplo de execução para o programa a ser desenvolvido. Considere a tabela de conversão abaixo ABCDEFGHIJKLMNOPQRSTUVWXYZ RISQPANOWXUMDHZTFGBLEYKCJV 1 – Codificar 2 – Decodificar 3 - Sair Escolha uma opcao: 1 Insira a mensagem: ISTO E UM TESTE DO PROGRAMA Mensagem codificada: WBLZ P ED LPBLP QZ TGZNGRDR 1 – Codificar 2 – Decodificar 3 - Sair Escolha uma opcao: 2 Insira a mensagem: WBLZ P ED LPBLP QZ TGZNGRDR Mensagem decodificada: ISTO E UM TESTE DO PROGRAMA 1 – Codificar 2 – Decodificar 3 - Sair Escolha uma opcao: 3 Programa finalizado. Até o momento fiz isso, porém não sei se está certo e não sei como criptografar e descriptografar, podem me ajudar? #include <iostream> #include <fstream> using namespace std; int main() { int opcao_menu, opcao_codificar; string texto; ofstream arquivo; arquivo.open("Trab_Final.txt"); while (1) { cout<<"\nCriptografia de Dados"; cout<<"\n1 - Codificar"; cout<<"\n2 - Decodificar"; cout<<"\n3 - Sair"; cout<<"\nInforme a opcao desejada: "; cin>>opcao_menu; if (opcao_menu == 1) { cout<<"Codificar Texto ou Arquivo"; cout<<"\n1 - Digitar texto"; cout<<"\n2 - Importar arquivo"; cout<<"\nInforme a opcao desejada: "; cin>>opcao_codificar; if (opcao_codificar == 1) { cout<<"\nDigite o texto: "; cin>>texto; arquivo<<texto<<"\n"; } if (opcao_codificar == 2) { ifstream arquivo; arquivo.open("arquivo.txt"); char c; while (arquivo.get(c)) { cout<<c; } } else { cout<<"Opcao invalida!"; } } if (opcao_menu == 2) { } if (opcao_menu == 3) { } else { cout<<"Opcao invalida!"; } } arquivo.close (); }
-
- criptografia
- manipulação de arquivos
- (e %d mais)
-
Eu fiz esse código para comparar a chave1 com a chave2 e exibir a menssagem2 caso as chaves forem diferentes.. porem eu coloco a chaves iguai e ele só amostra a mensagem2 Scanner scan = new Scanner(System.in); Random ran = new Random(); int idade; String nome,chave2, mensagem2,mensagem; String letras = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVYWXZ"; String texto = ""; int num = -1; for( int i = 0; i < 2; i++ ) { num = ran.nextInt( letras.length() ); texto += letras.substring( num, num + 1 ); } String chave = ""; int index = -1; for( int i = 0; i < 20; i++ ) { index = ran.nextInt( letras.length() ); chave += letras.substring( index, index + 1 ); } System.out.println(chave); System.out.println("Mensagem"); mensagem = scan.nextLine(); mensagem2 = texto; System.out.println("Digite a chave"); chave2 = scan.nextLine(); if(chave==chave2){ System.out.println(mensagem); } else if (chave != chave2) { System.out.println(mensagem2); }
-
#include <iostream> #include <string.h> #include<stdlib.h> #include<stdio.h> #include<ctype.h> #include<fstream> using namespace std; ////Com Espaços e Numeros void cript_espnum() { char frase[30],frase_cript[30],chave[10],chave_estendida[30],alfabeto[26][26],a='A',z,aux_linha,aux_coluna; int i,j; for(i=0;i<26;i++) { z=a; for(j=0;j<26;j++) { alfabeto[i][j]=z; if(z=='Z') { z='A'; } else { z++; } } a++; } setbuf(stdin,NULL); cout << "Digite a frase a ser criptografada:"; cin.getline(frase,30); cout << "Digite a chave:"; cin >> chave; for(i=0;i<strlen(frase);i++) { frase[i]=toupper(frase[i]); } for(i=0;i<strlen(chave);i++) { chave[i]=toupper(chave[i]); } for(int i=0,cont=0;i<strlen(frase);i++) { if(chave[cont] != '\0') { chave_estendida[i] = chave[cont]; } else { cont = 0; chave_estendida[i] = chave[cont]; } cont++; } chave_estendida[strlen(frase)] = '\0'; for(int i=0;i<strlen(frase);i++) { if(frase[i]>=65 && frase[i]<=90) { aux_linha=frase[i]-65; aux_coluna=chave_estendida[i]-65; frase_cript[i]=alfabeto[aux_linha][aux_coluna]; } else { frase_cript[i]=frase[i]; } } cout << "Frase criptografada:" << endl; cout << frase_cript<< endl; exit(0); } //Com Espaços void cript_espaco() { char frase[30],frase_cript[30],chave[10],chave_estendida[30],alfabeto[26][26],a='A',z,aux_linha,aux_coluna; int i,j; for(i=0;i<26;i++) { z=a; for(j=0;j<26;j++) { alfabeto[i][j]=z; if(z=='Z') { z='A'; } else { z++; } } a++; } setbuf(stdin,NULL); cout << "Digite a frase a ser criptografada:"; cin.getline(frase,30); cout << "Digite a chave:"; cin >> chave; for(i=0;i<strlen(frase);i++) { frase[i]=toupper(frase[i]); } for(i=0;i<strlen(chave);i++) { chave[i]=toupper(chave[i]); } for(int i=0,cont=0;i<strlen(frase);i++) { if(chave[cont] != '\0') { chave_estendida[i] = chave[cont]; } else { cont = 0; chave_estendida[i] = chave[cont]; } cont++; } for(int i=0;i<strlen(frase);i++) { if(frase[i]==32) { frase_cript[i]=32; } else { aux_linha=frase[i]-65; aux_coluna=chave_estendida[i]-65; frase_cript[i]=alfabeto[aux_linha][aux_coluna]; } } cout << "Frase criptografada:" << endl; cout << frase_cript << endl; exit(0); } void descript() { char frase_cript[500],chave[10],chave_estendida[500],alfabeto[26][26],aux,frase_descrip[500],auxl; int i; setbuf(stdin,NULL); ifstream arquivo_entrada; cout << "Digite a frase criptografada:"; cin.getline(frase_cript,500); cout << "Digite a chave utilizada:"; cin >> chave; for(i=0;i<strlen(frase_cript);i++) { frase_cript[i]=toupper(frase_cript[i]); } for(i=0;i<strlen(chave);i++) { chave[i]=toupper(chave[i]); } char a = 'A'; char z; for (int i = 0; i < 26; i++) { z = a; for (int j = 0; j < 26; j++) { alfabeto[i][j] = z; if (z == 'Z') { z = 'A'; } else { z++; } } a++; } for(int i=0,cont=0;i<strlen(frase_cript);i++) { if(chave[cont] != '\0') { chave_estendida[i] = chave[cont]; } else { cont = 0; chave_estendida[i] = chave[cont]; } cont++; } chave_estendida[strlen(frase_cript)] = '\0'; cout << chave_estendida << endl; for(int i=0;i<strlen(frase_cript);i++) { aux=chave_estendida[i]-65; for(int j=0;j<26;j++) { if(alfabeto[j][aux]==frase_cript[i]) { auxl=j+65; } } frase_descrip[i]=auxl; } cout << "Frase descriptografada:" << endl; cout << frase_descrip << endl; exit(0); } //Função criptografa void criptografa() { char alfabeto[26][26],frase[30]; char chave[10]; char a = 'A'; char z; for (int i = 0; i < 26; i++) { z = a; for (int j = 0; j < 26; j++) { alfabeto[i][j] = z; if (z == 'Z') { z = 'A'; } else { z++; } } a++; } setbuf(stdin,NULL); cout << "Digite uma frase:"; cin.getline(frase, 30); for (int i = 0; i < strlen(frase); i++) { frase[i]=toupper(frase[i]); } for (int i = 0; i < strlen(frase); i++) { if (frase[i] == ' ') { for (int y = i; y < strlen(frase); y++) frase[y] = frase[y + 1]; i--; } } cout << frase << endl; cout << "Digite a chave:"; cin >> chave; for(int i=0;i<strlen(chave);i++) { chave[i]=toupper(chave[i]); } char aux[30]; for (int i = 0, cont = 0; i < strlen(frase); i++) { if (chave[cont] != '\0') { aux[i] = chave[cont]; } else { cont = 0; aux[i] = chave[cont]; } cont++; } aux[strlen(frase)] = '\0'; cout<<aux << endl; char fraseaux[30],auxl,auxc,linha,frase_descript[30]; for(int i=0;i<strlen(frase);i++) { auxl=frase[i]-65; auxc=aux[i]-65; fraseaux[i]=alfabeto[auxl][auxc]; } exit(0); } //Função menu interno void Menuinterno () { char opcao; while(opcao!='a'||opcao!='b'||opcao!='c') { system("cls"); cout << "\n\tCriptografar"; cout << "\n\na - Sem espaco"; cout << "\n\nb - Manter os espaco"; cout << "\n\nc - Manter numeros"; cout << "\n\nEscolha uma opcao: "; cin >> opcao; switch(opcao) { case 'a': criptografa(); break; case 'b': cript_espaco(); break; case 'c': cript_espnum(); break; default: cout << "Opcao Invalida!Tente novamente!"; system("pause"); } } } //Função de menu void Menu() { char opcao; while(1) { system("cls"); cout<< "\n\tPrograma de Criptografia"; cout<<"\n\n 1 - Criptografar Arquivo"; cout << "\n\n 2 - Descriptografar Arquivo"; cout << "\n\n 3 - Creditos"; cout << "\n\n 4 - Sair"; cout << "\n\n Informe a opcao desejada: "; cin >> opcao; setbuf(stdin,NULL); switch(opcao) { case '1': Menuinterno(); break; case '2': descript() ; break; case '3': cout << "\n\nProgramadores:"; cout << " Leonardo\n"; system("pause"); break; case '4': cout << "\nFinalizando o programa!"; exit(0); break; default: cout << "Opcao Invalida!Tente novamente...\n"; system("pause"); } } } int main() { Menu(); } Eu gostaria que Alguém me ajuda-se a refinar este código e a colocar arquivo nele para poder ler um arquivo de texto ao invés de escrever uma frase só, e outra um menu que retornasse .
-
#include <iostream> #include <string.h> #include<stdlib.h> #include<stdio.h> #include<ctype.h> #include<fstream> using namespace std; ////Com Espaços e Numeros void cript_espnum() { char frase[30],frase_cript[30],chave[10],chave_estendida[30],alfabeto[26][26],a='A',z,aux_linha,aux_coluna; int i,j; for(i=0;i<26;i++) { z=a; for(j=0;j<26;j++) { alfabeto[i][j]=z; if(z=='Z') { z='A'; } else { z++; } } a++; } setbuf(stdin,NULL); cout << "Digite a frase a ser criptografada:"; cin.getline(frase,30); cout << "Digite a chave:"; cin >> chave; for(i=0;i<strlen(frase);i++) { frase[i]=toupper(frase[i]); } for(i=0;i<strlen(chave);i++) { chave[i]=toupper(chave[i]); } for(int i=0,cont=0;i<strlen(frase);i++) { if(chave[cont] != '\0') { chave_estendida[i] = chave[cont]; } else { cont = 0; chave_estendida[i] = chave[cont]; } cont++; } chave_estendida[strlen(frase)] = '\0'; for(int i=0;i<strlen(frase);i++) { if(frase[i]>=65 && frase[i]<=90) { aux_linha=frase[i]-65; aux_coluna=chave_estendida[i]-65; frase_cript[i]=alfabeto[aux_linha][aux_coluna]; } else { frase_cript[i]=frase[i]; } } cout << "Frase criptografada:" << endl; cout << frase_cript<< endl; exit(0); } //Com Espaços void cript_espaco() { char frase[30],frase_cript[30],chave[10],chave_estendida[30],alfabeto[26][26],a='A',z,aux_linha,aux_coluna; int i,j; for(i=0;i<26;i++) { z=a; for(j=0;j<26;j++) { alfabeto[i][j]=z; if(z=='Z') { z='A'; } else { z++; } } a++; } setbuf(stdin,NULL); cout << "Digite a frase a ser criptografada:"; cin.getline(frase,30); cout << "Digite a chave:"; cin >> chave; for(i=0;i<strlen(frase);i++) { frase[i]=toupper(frase[i]); } for(i=0;i<strlen(chave);i++) { chave[i]=toupper(chave[i]); } for(int i=0,cont=0;i<strlen(frase);i++) { if(chave[cont] != '\0') { chave_estendida[i] = chave[cont]; } else { cont = 0; chave_estendida[i] = chave[cont]; } cont++; } for(int i=0;i<strlen(frase);i++) { if(frase[i]==32) { frase_cript[i]=32; } else { aux_linha=frase[i]-65; aux_coluna=chave_estendida[i]-65; frase_cript[i]=alfabeto[aux_linha][aux_coluna]; } } cout << "Frase criptografada:" << endl; cout << frase_cript << endl; exit(0); } void descript() { char frase_cript[500],chave[10],chave_estendida[500],alfabeto[26][26],aux,frase_descrip[500],auxl; int i; setbuf(stdin,NULL); ifstream arquivo_entrada; cout << "Digite a frase criptografada:"; cin.getline(frase_cript,500); cout << "Digite a chave utilizada:"; cin >> chave; for(i=0;i<strlen(frase_cript);i++) { frase_cript[i]=toupper(frase_cript[i]); } for(i=0;i<strlen(chave);i++) { chave[i]=toupper(chave[i]); } char a = 'A'; char z; for (int i = 0; i < 26; i++) { z = a; for (int j = 0; j < 26; j++) { alfabeto[i][j] = z; if (z == 'Z') { z = 'A'; } else { z++; } } a++; } for(int i=0,cont=0;i<strlen(frase_cript);i++) { if(chave[cont] != '\0') { chave_estendida[i] = chave[cont]; } else { cont = 0; chave_estendida[i] = chave[cont]; } cont++; } chave_estendida[strlen(frase_cript)] = '\0'; cout << chave_estendida << endl; for(int i=0;i<strlen(frase_cript);i++) { aux=chave_estendida[i]-65; for(int j=0;j<26;j++) { if(alfabeto[j][aux]==frase_cript[i]) { auxl=j+65; } } frase_descrip[i]=auxl; } cout << "Frase descriptografada:" << endl; cout << frase_descrip << endl; exit(0); } //Função criptografa void criptografa() { char alfabeto[26][26],frase[30]; char chave[10]; char a = 'A'; char z; for (int i = 0; i < 26; i++) { z = a; for (int j = 0; j < 26; j++) { alfabeto[i][j] = z; if (z == 'Z') { z = 'A'; } else { z++; } } a++; } setbuf(stdin,NULL); cout << "Digite uma frase:"; cin.getline(frase, 30); for (int i = 0; i < strlen(frase); i++) { frase[i]=toupper(frase[i]); } for (int i = 0; i < strlen(frase); i++) { if (frase[i] == ' ') { for (int y = i; y < strlen(frase); y++) frase[y] = frase[y + 1]; i--; } } cout << frase << endl; cout << "Digite a chave:"; cin >> chave; for(int i=0;i<strlen(chave);i++) { chave[i]=toupper(chave[i]); } char aux[30]; for (int i = 0, cont = 0; i < strlen(frase); i++) { if (chave[cont] != '\0') { aux[i] = chave[cont]; } else { cont = 0; aux[i] = chave[cont]; } cont++; } aux[strlen(frase)] = '\0'; cout<<aux << endl; char fraseaux[30],auxl,auxc,linha,frase_descript[30]; for(int i=0;i<strlen(frase);i++) { auxl=frase[i]-65; auxc=aux[i]-65; fraseaux[i]=alfabeto[auxl][auxc]; } exit(0); } //Função menu interno void Menuinterno () { char opcao; while(opcao!='a'||opcao!='b'||opcao!='c') { system("cls"); cout << "\n\tCriptografar"; cout << "\n\na - Sem espaco"; cout << "\n\nb - Manter os espaco"; cout << "\n\nc - Manter numeros"; cout << "\n\nEscolha uma opcao: "; cin >> opcao; switch(opcao) { case 'a': criptografa(); break; case 'b': cript_espaco(); break; case 'c': cript_espnum(); break; default: cout << "Opcao Invalida!Tente novamente!"; system("pause"); } } } //Função de menu void Menu() { char opcao; while(1) { system("cls"); cout<< "\n\tPrograma de Criptografia"; cout<<"\n\n 1 - Criptografar Arquivo"; cout << "\n\n 2 - Descriptografar Arquivo"; cout << "\n\n 3 - Creditos"; cout << "\n\n 4 - Sair"; cout << "\n\n Informe a opcao desejada: "; cin >> opcao; setbuf(stdin,NULL); switch(opcao) { case '1': Menuinterno(); break; case '2': descript() ; break; case '3': cout << "\n\nProgramadores:"; cout << " Leonardo\n"; system("pause"); break; case '4': cout << "\nFinalizando o programa!"; exit(0); break; default: cout << "Opcao Invalida!Tente novamente...\n"; system("pause"); } } } int main() { Menu(); } Eu gostaria que Alguém me ajuda-se a refinar este código e a colocar arquivo nele para poder ler um arquivo de texto ao invés de escrever uma frase só, e outra um menu que retornasse .
-
- criptografia a ser refinada
- ajuda criptografia
- (e %d mais)
-
Estou criando um programa de criptografia de um exercício do livro do Deitel: Já fiz o código de criptografia, mas tenho dois problemas, os numeros de 0 à 3 geram dois digitos, o que atrapalhará na descriptografia. E e também não sei como descriptografar, como inverter a função de resto de divisão: a = ((a+7)%10+7); Abaixo o que eu já fiz de código: #include <stdio.h> #include <stdlib.h> // ler um inteiro de 4 digitos // substituir cada digito por (digito+7)%10+(7) // trocar o primeiro pelo terceiro e o segundo pelo quarto // Imprimir o inteiro criptografado // Criar um que descriptografe void criptografa(){ int num,a,b,c,d; printf("\nDigite o numero de 4 digitos que sera criptografado: "); scanf("%d", &num); //Inicia Criptografia a = num/1000; b = (num%1000)/100; c = (num%100)/10; d = num%10; printf("separado: %d %d %d %d\n", a,b,c,d); a = ((a+7)%10+7); b = ((b+7)%10+7); c = ((c+7)%10+7); d = ((d+7)%10+7); printf("Ordenado: %d %d %d %d\n", a,b,c,d); printf("Descriptografado: %d\n", num); printf("Criptografado: %d%d%d%d\n", c,d,a,b); system("pause"); } void descriptografa() { // Inverter equacao a = ((a+7)%10+7) } void menu() { int op; do{ printf("\n\n Criptografia!!! \n\n"); printf("1 - Criptografar\n"); printf("2 - Descriptografar\n"); printf("3 - Sair\n\n"); printf("Escolha a opcao desejada:"); scanf("%d", &op); switch(op){ case 1: criptografa(); break; case 2: descriptografa(); break; case 3: break; default: break; } }while(op!=3); } int main() { menu(); system("pause"); return 0; } Alguém consegue me dar uma luz?
-
- criptografia
- deitel
-
(e %d mais)
Tags:
-
Estou com um código de criptografia DES, o código utiliza um sistema de 3 txt's previamente criados pelo usuário, durante o programa o mesmo informa o nome dos txt's, sendo que um deles já previamente preenchido, estou tentando alterar para que o usuário dê o valor no próprio programa, em vez de fornecer o nome do arquivo txt, no entanto o programa não está lendo a linha do gets(string), poderiam me ajudar por favor? Segue abaixo parte do código. ---------- switch(opcao) { case 1: printf("\n\tENCRIPTOGRAFANDO...\n"); printf("Entre com a chave numerica de ate 8 digitos:"); scanf("%s",&chave[0]); printf("\nAbra o arquivo orig.txt e digite a mensagem que deseja criptografar. \nSalve e Feche. \nDigite 'orig.txt', sem aspas: "); scanf("%s",&nome1[0]); printf("\nEntre com o nome do arquivo para salvar o texto codificado (cripto.txt): "); scanf("%s",&nome2[0]); printf("\nArquivo encriptado com sucesso. Verifique cripto.txt."); encrypt(); break; case 2: printf("\n\tDECRIPTOGRAFANDO...\n"); printf("Entre com a chave numerica usada para criptografar: "); scanf("%s",&chave); printf("\nEntre com o nome do arquivo que contem o texto codificado (cripto.txt): "); scanf("%s",&nome1[0]); printf("\nEntre com o nome do arquivo para salvar o texto decifrado (descripto.txt): "); scanf("%s",&nome2[0]); printf("\nArquivo decriptado com sucesso. Verifique descripto.txt."); decrypt(); break; case 0: printf("\n\tFim da execucao. Programa de criptografia DES, APS segundo semestre.\n\n"); printf("\n\tPor Stephani Souza, Heitor Galassi, Nathan Costa e Thyago Biazin."); exit(0); default: printf("\nOpcao invalida! Tente novamente.\n"); getchar(); break; } } void encrypt() { // char string[150]; int i,j,o; struct LR op, ip; struct ks keys[16]; FILE *arqin, *arqout; /* FILE *msg; msg = fopen("orig.txt","w+"); //chamo o arquivo para ler+escrever, apago o que estava nele antes if(!msg) { printf("\nErro ao abrir arquivo!"); fclose(msg); } printf("\nDigite a mensagem que sera criptografada(max. 150 caracteres):"); gets(string); for(o=0; string[o]; o++) putc(string[o], msg); msg = arqin;*/ for (i = 0; i < 16; i++) { keys = KS (i); } arqin = stdin; arqout = stdout; if ((arqin = fopen(nome1, "rb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome1 ); exit(1); } if ((arqout = fopen(nome2, "wb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome2 ); exit(1); } void decrypt() { int i; struct LR op, ip; struct ks keys[16]; FILE *arqin, *arqout; for (i =0; i < 16; i++) { keys = KS (i); } arqin = stdin; arqout = stdout; if ((arqin = fopen(nome1, "rb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome1 ); exit(1); } if ((arqout = fopen(nome2, "wb")) == NULL) { fprintf( stderr, "erro no arquivo %s\n", nome2 ); exit(1); } while (fread(&ip, 1, sizeof(struct LR), arqin) != 0) ---------- galera agradeço desde já!
-
- string
- criptografia
-
(e %d mais)
Tags:
-
Olá, pessoal! Recentemente postei no meu website um algoritmo de criptografia, que fiz com base em outros algoritmos, como Cifra de César, Cifra de Vigenère dentre outros algoritmos... link: http://aplicativosparaweb.com/criptografia O intuito de criar este tópico é para que possamos discutir um pouco essa solução que desenvolvi... Gostaria, se possível, que caso haja alguém aqui especializado no assunto, que fizesse suas considerações ou mesmo que me apontasse possíveis falhas ou melhorias a ser feito no código... No mais, é isso! Espero contar com a participação de todos. Att,
- 6 respostas
-
- criptografia
- descriptografia
- (e %d mais)
-
Olá pessoal. Faz tempo que não dou as caras por aqui. :) Volto hoje com uma dúvida. Já há algum tempo meu programa desktop armazena a senha encripitada utilizando o componente TLbSHA1 TurboPower LockBox (LockBox 2). Só que recentemente eu estou fazendo uma pequena implementação em PHP onde utilizo a função sha1 para codificar a senha de entrada, porém ela nunca é igual àquela que foi armazenada via app desktop. já tentei utilizar outro código de emcriptação no Delphi (Crypt.SHA1.pas), mas segue com o mesmo problema. Assim, minha pergunta é: tem alguém aqui que utiliza ou já utilizou desta combinação (BD acessado via Delphi e PHP) incluindo a criptografia sha1 e teve sucesso na validação por ambas as aplicações? Se sim, o que é que eu estaria deixando de fazer o como deveria proceder para resolver este problema? Grato pela atenção Micheus
- 2 respostas
-
Estou publicando uma classe de minha autoria para criptografar arquivos utilizando senha para derivação de chave simétrica. Gostaria de receber contribuições, críticas e sugestões da comunidade. Como também estou publicando em diversos fóruns não brasileiros peço que comentários em pull requests sejam feitos em inglês. IMPORTANTE: Se a exceção java.security.InvalidKeyException: Illegal key size or default parameters for lançada provavelmente você precisará instalar o Java Unlimited Strength Jurisdiction Policy File para a sua versão do JRE. Repositório: https://github.com/fabiofranco85/file-encryptor
- 1 resposta
-
- criptografia
- java
-
(e %d mais)
Tags:
-
Boa tarde pessoal! Estou começando um trabalho sobre criptografia, e pensei em elaborar um script um pouco diferente... No caso do script que pensei, cada letra teria uma única "Chave", da seguinte forma: Ex.: Vogais (A, E, I, O, U) teriam o número ZERO. E as consoantes (B, C, D, (...)) teriam um outro número, UM. Então, cada letra das palavras seriam substituídas pelo identificador (se é uma vogal ou consoante) e elevado seu valor da tabela ANSCII. Assim, a palavra " Dado " criptografada se tornaria " 1(01000100)0(01100001)1(01100100)0(01101111) ". Gostaria de dicas sobre como formular esse script, no caso para trocar o valor eu teria de fazer um "if", testando cada possibilidade de letra? Ou existe alguma função que pudesse facilitar o processo?? Sou novo em programação, seria muito bem vinda todo tipo de dica e informação. Desde já, muito obrigado! Guilherme de Oliveira.
- 1 resposta
-
- C++
- Criptografia
-
(e %d mais)
Tags:
-
Olá pessoal, Já usei o C na faculdade para fazer simulações (física), agora comecei a estudar um assunto completamente novo que é criptografia . Algumas das minhas dificuldade são as seguintes : 1 - Uso do tipo uint32_t , vi na documentação que ele é um array de unsigned long , mas não consigo passar como argumento. 2 - Estou começado com o XTEA , usando a implementação da WIki (http://en.wikipedia.org/wiki/XTEA) , só que não consegui pensar em um jeito efetivo de usar , por exemplo numa string. Então , venho aqui pedir que me expliquem , como fazer o uso correto do uint32_t e alguém poderia me dar um exemplo de uso prático das funções. OBS: em v[2] como argumento , é nescessário quebrar a string em bloco de 2? Abraços