假设我编写了一个标准算法的实现,例如MD*或SHA*:我怎么知道它是正确的?同一算法的不同实现必须产生相同的摘要?
从bool []到byte []:将bool []转换为byte []
但我需要将byte []转换为List,其中列表中的第一项是LSB.
我尝试了下面的代码但是当转换为字节并再次回到bools时,我有两个完全不同的结果...:
public List<bool> Bits = new List<bool>();
public ToBools(byte[] values)
{
foreach (byte aByte in values)
{
for (int i = 0; i < 7; i++)
{
Bits.Add(aByte.GetBit(i));
}
}
}
public static bool GetBit(this byte b, int index)
{
if (b == 0)
return false;
BitArray ba = b.Byte2BitArray();
return ba[index];
}
Run Code Online (Sandbox Code Playgroud) 使用Bitmap.create创建位图(25,25,Config.ARGB_8888)
设置一个alpha值小于或等于0xA9的像素会导致像素没有被传入的内容设置.我读了另一个堆栈溢出问题说setHasAlpha(true),我在测试中做了 - 但是仍然没有解决这个问题.
这是我的android测试用例,显示了我的问题:
public void testSettingBitmaps() {
Bitmap bitmap = Bitmap.createBitmap(25, 25, Config.ARGB_8888);
bitmap.setHasAlpha(true);
int color = 0x00fefefe;
int x= 0;
int y = 0;
for(int alpha = 0xFF000000; alpha != 0x00000000; alpha = alpha - 0x01000000) {
int colorPlusAlpha = color + alpha;
bitmap.setPixel(x, y, colorPlusAlpha);
//
// This test succeeds if the bitmap let us set the pixel.
//
assertEquals(String.format("Current alpha value: %x, Expected pixel value: %x, Actual pixel value: %x", alpha, colorPlusAlpha, bitmap.getPixel(x, y)),
colorPlusAlpha, …Run Code Online (Sandbox Code Playgroud)
所以,正如你在左上角看到的那样,有变色.这违背了隐写术的目的.
我很确定这与我在图像中隐藏文本的方式有关.我是这样做的,使用Processing:
void hide(PImage payload,PImage carrier){
if(payload.width > carrier.width){
print("Carrier can not be smaller than payload");
return;
}
for(int x = 0; x < payload.width; x++){
int payloadPixel = payload.pixels[x];
int carrierPixel = carrier.pixels[x];
carrierPixel = carrierPixel & 0xFFFFFF00;
payloadPixel = payloadPixel & 0x000000FF;
carrierPixel = carrierPixel | payloadPixel;
carrier.pixels[x] = carrierPixel;
}
carrier.updatePixels();
carrier.save("newTulips.JPG");
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能让它更好地隐藏?
我正在尝试实施隐写术.我正在读取一个图像"a.jpeg"并通过在偏移50开始的最低有效位改变其连续的7个字节来插入一个字节.这是成功完成的,因为当我打印字节时,最后一位被相应地改变.然后我把它保存为"ao.jpeg".但是当我从50读取字节值时,它们与我保存的那个不一样.这是我的代码
public static void main(String[] args) throws IOException {
BufferedImage inputImage = ImageIO.read(new File("a.jpeg"));
int offset=50;
byte data = 7;
byte[] image = get_byte_data(inputImage);//function converts bufferedimage to byte array
//add data at end of each byte starting from offset
System.out.println("bytes altered are :");
for(int bit=7; bit>=0; --bit, ++offset)//for each bit of data
{
int b = (data >>> bit) & 1;
image[offset] = (byte)((image[offset] & 0xFE) | b );
String s1 = String.format("%8s", Integer.toBinaryString(image[offset] & 0xFF)).replace(' ', '0');
System.out.println(s1);
} …Run Code Online (Sandbox Code Playgroud) 我最近一直在做一些项目,我一直想进入隐写术。我查了几种方法来做到这一点,但其中一种我不太明白。
(image[i][j].red & ~0x3) | ((file[f] & 0x60) >> 5);
(image[i][j].green & ~0x3) | ((file[f] & 0x18) >> 3);
(image[i][j].blue & ~0x7) | ((file[f] & 0x7));
Run Code Online (Sandbox Code Playgroud)
我得到了它的一部分,比如 & ~0x3 和 & ~0x7 分别将红色/绿色的最后 2 位和蓝色的最后 3 位归零,但真正让我感兴趣的是 file[f] & 0x60, 0x18 , 和 0x7。file是一个从二进制文件中读入的无符号字符数组,image是一个 rgb 矩阵,每个组件有 3 个无符号字符,分别代表红色、绿色和蓝色。顺便说一下,这一切都在 C 中。提前致谢
对于我的研究项目,我需要修改 png 文件中的一些字节。
这是用于隐写术项目,我必须稍微修改一个字节并隐藏照片中的消息。
在下面的代码中,当我运行它时,它将每个字节都变为 0 并且文件被破坏。在 bmp 文件中它可以工作,但我不知道如何在 png 格式中做到这一点。
不幸的是我无法使用任何第三方库。我只需要帮助如何正确读取每个字节,然后使用 C++ 对其进行修改。感谢帮助。
string path = "C:\\Users\\sth....";
fstream file(path, ios::binary | ios::in | ios::out);
char buffer[1000];
file.seekp(300);
file << char(0);
file.read(buffer, 1000);
for(char c : buffer)
cout << int(c) << " ";
Run Code Online (Sandbox Code Playgroud) 我想使用Stenography向图像中添加一些文本,如"Manula",并希望保存它.而且我想再次检索它.我想用C#制作这个项目.
任何人都可以发送给我这个程序的C#代码.
谢谢..
到目前为止,我已经在十六进制编辑器中打开了图像并查看了字节。但是,对于我的一生,我无法识别声音。我花了几天的时间。我什至尝试用Audacity打开文件(作为“原始数据”)并播放它。只是“噪音”。试图创建直方图/频率分析,但一无所获。
任何帮助,将不胜感激。
我想尝试从之前插入消息的图像中提取消息..但是下面的描述有错误.
这段代码提取:
% Read Image Stego
IS = imread('imagestego.bmp');
% Extract RedChannel
RedChannel = IS(:,:,1);
% Convert RedChannel to biner
bitstego = uint8(reshape(dec2bin(RedChannel,8)',1,[]) = '0');
nBitstego = length(bitstego);
% Extraction
extBits = bitget(RedChannel(1:end),1).';
extMessage = char(bin2dec(reshape(int2str(extBits),8,[]).').');
Run Code Online (Sandbox Code Playgroud)
和提取代码中的此错误:
>> latihanextract
Error: File: latihanextract.m Line: 8 Column: 55
The expression to the left of the equals sign is not a valid target for an assignment.
Run Code Online (Sandbox Code Playgroud)
这是嵌入代码之前......的工作!
coverImage = imread('foto1.jpg');
message = 'IMRON';
%EMBEDDING
RedChannel = coverImage(:,:,1);
GreenChannel = coverImage(:,:,2);
BlueChannel = coverImage(:,:,3); …Run Code Online (Sandbox Code Playgroud) steganography ×13
android ×2
byte ×2
c# ×2
c++ ×2
java ×2
png ×2
python ×2
arrays ×1
audio ×1
bit-shift ×1
bitmap ×1
boolean ×1
c ×1
cryptography ×1
encoding ×1
extract ×1
hash ×1
hex-editors ×1
image ×1
matlab ×1
processing ×1
unit-testing ×1