⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cryptosystem.cpp

📁 des preko c neznam hocel pomoci
💻 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 + -