示例#1
0
bool ocultar(Imagen &imagen, char cadena[]){
	int tama_ima = imagen.filas() * imagen.columnas();
	int tama_mens=strlen(cadena);
	int contador=0;

	if( (tama_mens +1) *8 > tama_ima){
		cerr << "La cadena es demasiado larga" << endl; // cerr
		return false;
	}else{
		for (int i =0;  i <= tama_mens; i++){
			for(int j=7; j>=0; j--){
				bool bit = get(cadena[i],j);
				byte byte_imagen = imagen.getPos(contador);
				if(bit){
					on(byte_imagen,0);
					imagen.setPos(contador,byte_imagen);
				}else{
					off(byte_imagen,0);
					imagen.setPos(contador,byte_imagen);
				}
				contador++;
			}
		}
		return true;		
	}
}
示例#2
0
bool revelar(Imagen imagen, char cadena[], const int tam_max){
	int tama_ima = imagen.filas() * imagen.columnas();	
	bool fin=false;
	int contador=0;

	for (int i=0; i< tam_max && i< tama_ima && !fin; i++){
		for (int j=7; j>=0; j--){
			byte byte_imagen = imagen.getPos(contador);
			if(get(byte_imagen,0)){
				unsigned char aux= cadena[i];
				on(aux,j);
				cadena[i]=aux;		
			}else{
				unsigned char aux= cadena[i];
				off(aux,j);
				cadena[i]=aux;	
			}
			contador++;
		}
		if (cadena[i]=='\0')
			fin =true;
	}
	return fin;	
}