ISStego 0.0.3

ISStego 0.0.3

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新版本2015 年 8 月

Isaac Stevao Sena 维护。



ISStego 0.0.3

ISStego 是一个用于 Mac OS X 和 iOS 的 Objective-C 库,可以使用数字技术将秘密数据编码和解码到图像中,这是一种通过隐藏来增强安全性的形式。

什么是隐写术?

隐写术源于希腊语单词 steganos,意为 隐藏或保护,以及 graphein,意为 写作。基本上,它是在不重要的物体中隐藏重要信息的做法。例如,我们可以在另一个消息、图像、音频或视频中隐藏一个消息。

查看示例

原始图像 隐写图像
纯图像(不含隐藏信息) 包含隐写术隐藏文本的图像(2198 个字符)。

[隐写术 是否 等于 加密]?

FALSE。它们完全不同。

加密的主要目的是通过将普通信息(明文)转换为难以理解的文本(密文)来 隐藏信息的意义。您可以检测到某些内容是否已经加密。

另一方面,隐写术 隐藏信息本身,并且大多数人不会察觉它的存在。

我们是否应该仅使用隐写术?

隐写术是一种安全形式,但并非独一无二。我们可以在隐写术之外使用其他形式的安全性,例如加密。

另请参阅.

ISStego 的工作原理是怎样的?

ISStego 采用了三种隐写术技术

  • 最低有效位(LSB):ISStego 使用 CoreGraphics 框架将图像每个像素的二元表示法取出来,并用信息位覆盖某些字节的 LSB;
  • 逐色周期(SCC):每个像素有四个字节的信息,关于红色、绿色和蓝色(RGB)以及通道 alpha(透明度)。使用 SCC,ISStego 通过旋转颜色字节来嵌入信息位;
  • 均匀分布:信息位在图像中均匀分布;

安装

手动

ISStego 文件夹拖入到您的项目中。

示例

OS X

ISStego OS X 示例

exampleOSX

iOS

ISStego iOS 示例

exampleiOS

使用方法

导入ISSteganographer

#import "ISSteganographer.h"

iOS

编码

NSString *encryptedPassword = @"47151d0e56f8dc";

UIImage *image  = [UIImage imageNamed:@"imageName"];

[ISSteganographer hideData:encryptedPassword
                 withImage:image
           completionBlock:^(id image, NSError *error) {
               if (error) {
                   NSLog(@"error: %@", error);
               } else {
                   [UIImagePNGRepresentation(image) writeToFile:@"PATH_OF_FILE"
                                                     atomically:YES];
               }
           }];

解码

UIImage *image  = [UIImage imageNamed:@"stegoImageName"];

[ISSteganographer dataFromImage:image
                completionBlock:^(NSData *data, NSError *error) {
                    if (error) {
                        NSLog(@"error: %@", error);
                    } else {
                        NSString *hiddenData = [[NSString alloc] initWithData:data
                                                                     encoding:NSUTF8StringEncoding];
                        NSLog(@"string: %@", hiddenData);
                    }
                }];

Mac OS X

编码

NSString *encryptedPassword = @"47151d0e56f8dc";

NSImage *image  = [NSImage imageNamed:@"imageName"];

[ISSteganographer hideData:encryptedPassword
                 withImage:image
           completionBlock:^(id image, NSError *error) {
               if (error) {
                   NSLog(@"error: %@", error);
               } else {
                   CGImageRef cgRef = [image CGImageForProposedRect:NULL
                                                            context:nil
                                                              hints:nil];

                   NSBitmapImageRep *bitmapImage = [[NSBitmapImageRep alloc] initWithCGImage:cgRef];

                   [bitmapImage setSize:[image size]];

                   NSData *pngData = [bitmapImage representationUsingType:NSPNGFileType
                                                          properties:nil];

                   [pngData writeToFile:@"PATH_OF_FILE"
                             atomically:YES];

                   bitmapImage = nil;
               }
           }];

解码

NSImage *image  = [NSImage imageNamed:@"stegoImageName"];

[ISSteganographer dataFromImage:image
                completionBlock:^(NSData *data, NSError *error) {
                    if (error) {
                        NSLog(@"error: %@", error);
                    } else {
                        NSString *hiddenData = [[NSString alloc] initWithData:data
                                                                     encoding:NSUTF8StringEncoding];
                        NSLog(@"string: %@", hiddenData);
                    }
                }];

作者

Isaac Stevao Sena, @IsaacStevaoSena

许可

ISStego 采用MIT许可证发布。请参阅LICENSE.md