📄 cryptosystem.cpp
字号:
/* cryptosystem.cpp *//* Apstraktna klasa kriptosustava. *//* 2004. godina *//* Autor: Darko Poljak *//* za objasnjenje f-ja vidjeti header */#include "cryptosystem.h"#include <ctype.h>string CryptoSystem::toHexString(const string& text) { string result; for(uint i=0;i<text.length();++i) { uint16 c=(unsigned char)text[i]; result+=CONVERT_DEC_HEX[(c>>4)&0xF]; result+=CONVERT_DEC_HEX[c&0xF]; } return result;}string CryptoSystem::toBinaryString(const string& text) { string result; for(uint i=0;i<text.length();++i) { uint8 ch=(unsigned char)text[i]; for(int j=7;j>=0;--j) { result+=(unsigned char)((ch>>j)&0x1)+'0'; } } return result;}int CryptoSystem::hexDigitNumber(const char hex) { int result=-1; if(isdigit(hex)) { result=hex-'0'; } else if((hex>='A' && hex<='F') || (hex>='a' && hex<='f')) { result=toupper(hex)-'A'+10; } return result;}string CryptoSystem::hexToAscii(const string& hex) { string result; int n; int digit,len=hex.length(); for(int i=len-1;i>=len%2;i-=2) { digit=hexDigitNumber(hex[i]); if(digit<0) { throw string("Invalid hex digit!"); } n=digit; digit=hexDigitNumber(hex[i-1]); if(digit<0) { throw string("Invalid hex digit!"); } n+=digit*16; string s; s+=(char)n; result.insert(0,s); } if(len%2) { n=hexDigitNumber(hex[0]); if(n<0) { throw string("Invalid hex digit!"); } string s; s+=(char)n; result.insert(0,s); } return result;}string CryptoSystem::binToAscii(const string& bin) { int len=bin.length(); string result; uint8 num; for(int i=1;i<=len/8;++i) { num=0; for(int j=0;j<8;++j) { uint8 digit=bin[len-i*8+j]; if(digit!='0' && digit!='1') { throw string("Invalid binary digit!"); } num<<=1; num|=digit-'0'; } string s; s+=(char)num; result.insert(0,s); } len%=8; if(len!=0) { num=0; for(int i=0;i<len;++i) { uint8 digit=bin[i]; if(digit!='0' && digit!='1') { throw string("Invalid binary digit!"); } num<<=1; num|=digit-'0'; } string s; s+=(char)num; result.insert(0,s); } return result;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -