精华内容
下载资源
问答
  • php base64解码图片 base64加密图片还原

    千次阅读 2018-11-17 14:09:01
    php base64解码图片 base64加密图片还原

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   
    <?php//文件名:base64.php$data="/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2MBERISGBUYLxoaL2NCOEJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY//AABEIADIAMgMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AJ9Z1G8i1e5SO6mRFbAVXIA4oAqDVL//AJ/J/wDvs0AI2qX/APz+z/8Afw0ARNq2of8AP7cf9/DQBE2sakOl/cf9/DQBC2s6mP8AmIXP/f00Aen27FreMkkkqCfyoA4HXjjW7v8A3/6CgBdK0q41QS/Z3jXy8Z3kjrn0B9KALsnhS/WNmMtudoJwGbP/AKDQBzrGgCFzQBA5oA9etv8Aj1h/3B/KgDz7xA2Ndu/9/wDoKANrwSS0V+BycJ/7NQBkTaNq0MLyyW7qiKWY7xwB170ATW+j219oEt5aySm6hB3xkgjjk44z06UAQXuk29joEN3cySi7n5jiBAAHXJ4z0/mKAOdc0wPYbX/j1h/3F/lSA858RtjX7z/f/oKANvwM37nUSOoCfyagDAl1vUZY2jkvJWRgQyluCD2oA2PCG+zgvdTncpaIm0j++Rzx9On40AJ43geZbXU4XMlq6BR6LnkH8f6UAca7UwPZbX/j1h/3F/lSA8z8TNjxDej/AG/6CmBBYaveaasq2k3liXAf5Qc4zjqPc0AUi9AFqXV7yTTlsGmH2VMEIFUe/JAyaAE/tu/XTTp/ng2pBGxkU989SM9aQGU70Ae12v8Ax6w/7i/yoA8w8UK//CR3uEYjf2HsKYGXtk/55v8AkaAArJ/zzb8jQAwrJ/zzf8jQBGySn/lm/wD3yaQDfJlP/LN/++TQB7Zag/ZYeP4F/lQA9o0LElFJ9xQAvlR/880/75FAB5Uf/PNP++RQAeVH/wA80/75FAB5Uf8AzzT/AL5FMA8qP/nmn/fIoAcBxSA//9k=";$img=base64_decode($data);echo $img;?>

     


    引用图片的方法:<img src="base64.php">

     

    输出:

    转自:http://www.cnblogs.com/coldair/archive/2012/05/31/2528546.html

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • Android中使用加密图片的解决方案

    千次阅读 2016-01-26 15:06:46
    Android中使用加密图片的解决方案产品要求资源zip包中的图片资源要加密,于是在需求的驱动下,在网上搜寻解决方案。加密方式加密方式很多种,从最简单的交换字节顺序,到各种加密算法。下面简单列一下网上摘录的加密...

    Android中使用加密图片的解决方案

    产品要求资源zip包中的图片资源要加密,于是在需求的驱动下,在网上搜寻解决方案。

    加密方式

    加密方式很多种,从最简单的交换字节顺序,到各种加密算法。下面简单列一下网上摘录的加密算法的对比。

    • AES/DES加密速度快,适合大量数据,DES容易破解,一般用3重DES,后来又出现了更快更安全的AES
    • RSA是公钥加密,速度慢,只能处理少量数据,优点是公钥即使在不安全的网络上公开,也能保证安全

    由此加密算法选定了AES加密算法,在网上搜索AES加密实现的时候发现几乎都是对byte[]的加密解密操作,考虑到Android机上对图片做解密操作可能对内存消耗大,尝试找有没有基于Stream的加密解密方式,经过了一番资料查找找到了支持AES加密解密的CipherInputStreamCipherOutputStream借助这两个Stream可以实现将加密的图片文件读取成解密后的Bitmap。方法找到了,下面来看下关键代码

    加密关键代码

    /**
    * 加密
    *
    * @param file   待加密数据
    * @param key    密钥
    * @param cipherAlgorithm    加密算法/工作模式/填充方式
    * @return byte[]    加密数据
    * @throws Exception
    */
    private static OutputStream encrypt(File file, Key key) throws Exception{
       //实例化
       Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
       //使用密钥初始化,设置为加密模式
       cipher.init(Cipher.ENCRYPT_MODE, key);
       //执行操作
       CipherOutputStream cos = new CipherOutputStream(new FileOutputStream(file), cipher);
       return cos;
    }

    解密关键代码

    /**
    * 解密
    *
    * @param file   待解密文件
    * @param key    密钥
    * @param cipherAlgorithm    加密算法/工作模式/填充方式
    * @return byte[]    解密数据
    * @throws Exception
    */
    private static InputStream decrypt(File file, Key key) throws Exception{
       //实例化
       Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
       //使用密钥初始化,设置为解密模式
       cipher.init(Cipher.DECRYPT_MODE, key);
       //执行操作
       CipherInputStream cis = new CipherInputStream(new FileInputStream(file), cipher);
       return cis;
    }

    构造Key

    /**
    * 转换密钥
    *
    * @param key    二进制密钥
    * @return 密钥
    */
    private static Key toKey(byte[] key){
       //生成密钥
       return new SecretKeySpec(key, "AES");
    }

    生成128位二进制密钥

    /**
    * 初始化密钥
    *
    * @return byte[] 密钥 
    * @throws Exception
    */
    public static byte[] initSecretKey() {
       //返回生成指定算法的秘密密钥的 KeyGenerator 对象
       KeyGenerator kg = null;
       try {
           kg = KeyGenerator.getInstance("AES");
       } catch (NoSuchAlgorithmException e) {
           e.printStackTrace();
           return new byte[0];
       }
       //初始化此密钥生成器,使其具有确定的密钥大小
       //AES 要求密钥长度为 128
       kg.init(128);
       //生成一个密钥
       SecretKey  secretKey = kg.generateKey();
       return secretKey.getEncoded();
    }

    至此,就可以通过生成的128为密钥加密解密文件了。那么接下来要解决下一个问题,将加密解密融入到项目中去。

    与现有项目融合

    项目的图片加载采用的是Universal-Image-Loader,最开始想到的方式是,下载U-I-L的源码将加密解密代码插入其中,问题可以解决。单后来考虑到U-I-L是一个相当成熟的框架,一定有通过扩展的方式来实现目的。

    解密图片

    U-I-L有提供设置自定义的ImageDownloader,让我们来看下ImageDownloader接口

    他有一个接口方法getStream

    public interface ImageDownloader {
    
        InputStream getStream(String uri, Object var2) throws IOException;
    
        ······
    }

    接下来让我们实现这个接口

    @Override
    public InputStream getStream(String s, Object o) throws IOException {
        if (s == null){
            return null;
        }
        if (s.toLowerCase(Locale.US).startsWith("file://")){
            String crop = Scheme.FILE.crop(s);
            try {
                return AESCoder.decrypt(new File(crop), AESCoder.get(context));
            } catch (Exception e) {
               e.printStackTrace();
            }
        }
        return null;
    }

    到此为止就可以实现,App读取加密后的资源图片。但是此时还有一个很大的漏洞,加载图片的时候开启了cacheOnDisk(true),这就会导致,解密后的图片缓存到sdcard的时候以解密形态存储,没有达到最初的目的,接下来要解决一下缓存加密的问题。

    加密缓存

    加密缓存,目的是从手机sdcard中不能拿到解密的图片,这里就要考虑对缓存逻辑动手脚了,此时我发现U-I-L的配置中可以配置DiskCache

    我们来看一下DiskCache接口

    public interface DiskCache {
    
        boolean save(String imageUri, InputStream imageStream, CopyListener listener) throws IOException;
    
        boolean save(String imageUri, Bitmap bitmap) throws IOException;
    
        ......
    }

    我们看到UnlimitedDiskCache实现啊了DiskCache接口,而项目中正好用的是这种缓存机制,所以我们可以重写UnlimitedDiskCache的这两个save方法,将解密的bitmap重新加密。

    主要代码如下

    @Override
    public boolean save(String imageUri, Bitmap bitmap) throws IOException {
        File imageFile = this.getFile(imageUri);
        File tmpFile = new File(imageFile.getAbsolutePath() + ".tmp");
        try {
            OutputStream encrypt = AESCoder.encrypt(tmpFile, AESCoder.get(context));
            BufferedOutputStream os = new BufferedOutputStream(encrypt, this.bufferSize);
            boolean savedSuccessfully = false;
    
            try {
                savedSuccessfully = bitmap.compress(this.compressFormat, this.compressQuality, os);
            } finally {
                IoUtils.closeSilently(os);
                if(savedSuccessfully && !tmpFile.renameTo(imageFile)) {
                    savedSuccessfully = false;
                }
                if(!savedSuccessfully) {
                    tmpFile.delete();
                }
            }
    
            bitmap.recycle();
            return savedSuccessfully;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    
    @Override
    public boolean save(String imageUri, InputStream imageStream, IoUtils.CopyListener listener) throws IOException {
        File imageFile = this.getFile(imageUri);
        File tmpFile = new File(imageFile.getAbsolutePath() + ".tmp");
        boolean loaded = false;
    
        try {
            OutputStream encrypt = AESCoder.encrypt(tmpFile, AESCoder.get(context));
            BufferedOutputStream os = new BufferedOutputStream(encrypt, this.bufferSize);
    
            try {
                loaded = IoUtils.copyStream(imageStream, os, listener, this.bufferSize);
            } finally {
                IoUtils.closeSilently(os);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            if(loaded && !tmpFile.renameTo(imageFile)) {
                loaded = false;
            }           
            if(!loaded) {
                tmpFile.delete();
            }       
        }       
        return loaded;
    }

    最后附上AES加密类的实现

    package util;
    
    import android.content.Context;
    
    import javax.crypto.Cipher;
    import javax.crypto.CipherInputStream;
    import javax.crypto.CipherOutputStream;
    import javax.crypto.spec.SecretKeySpec;
    import java.io.*;
    import java.security.Key;
    
    public class AESCoder {
    
        /**
         * 密钥算法
         */
        private static final String KEY_ALGORITHM = "AES";
    
        private static final String DEFAULT_CIPHER_ALGORITHM = "AES/ECB/PKCS5Padding";
    
        public static byte[] get(Context context){
            try {
                InputStream is = context.getAssets().open("aes.key");
                byte[] k = new byte[16];
                is.read(k);
                return k;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        /**
         * 加密
         *
         * @param file  待加密数据
         * @param key   二进制密钥
         * @return byte[]   加密数据
         * @throws Exception
         */
        public static OutputStream encrypt(File file, byte[] key) throws Exception{
            return encrypt(file, key, DEFAULT_CIPHER_ALGORITHM);
        }
    
        /**
         * 解密
         *
         * @param file  待解密数据
         * @param key   二进制密钥
         * @return byte[]   解密数据
         * @throws Exception
         */
        public static InputStream decrypt(File file, byte[] key) throws Exception{
            return decrypt(file, key,DEFAULT_CIPHER_ALGORITHM);
        }
    
    
        /**
         * 转换密钥
         *
         * @param key   二进制密钥
         * @return 密钥
         */
        private static Key toKey(byte[] key){
            //生成密钥
            return new SecretKeySpec(key, KEY_ALGORITHM);
        }
    
        /**
         * 加密
         *
         * @param file  待加密数据
         * @param key   二进制密钥
         * @param cipherAlgorithm   加密算法/工作模式/填充方式
         * @return byte[]   加密数据
         * @throws Exception
         */
        private static OutputStream encrypt(File file, byte[] key, String cipherAlgorithm) throws Exception{
            //还原密钥
            Key k = toKey(key);
            return encrypt(file, k, cipherAlgorithm);
        }
    
        /**
         * 加密
         *
         * @param file  待加密数据
         * @param key   密钥
         * @param cipherAlgorithm   加密算法/工作模式/填充方式
         * @return byte[]   加密数据
         * @throws Exception
         */
        private static OutputStream encrypt(File file, Key key, String cipherAlgorithm) throws Exception{
            //实例化
            Cipher cipher = Cipher.getInstance(cipherAlgorithm);
            //使用密钥初始化,设置为加密模式
            cipher.init(Cipher.ENCRYPT_MODE, key);
            //执行操作
            CipherOutputStream cos = new CipherOutputStream(new FileOutputStream(file), cipher);
            return cos;
        }
    
        /**
         * 解密
         *
         * @param file  待解密数据
         * @param key   二进制密钥
         * @param cipherAlgorithm   加密算法/工作模式/填充方式
         * @return byte[]   解密数据
         * @throws Exception
         */
        private static InputStream decrypt(File file, byte[] key,String cipherAlgorithm) throws Exception{
            //还原密钥
            Key k = toKey(key);
            return decrypt(file, k, cipherAlgorithm);
        }
    
        /**
         * 解密
         *
         * @param file  待解密文件
         * @param key   密钥
         * @param cipherAlgorithm   加密算法/工作模式/填充方式
         * @return byte[]   解密数据
         * @throws Exception
         */
        private static InputStream decrypt(File file, Key key, String cipherAlgorithm) throws Exception{
            //实例化
            Cipher cipher = Cipher.getInstance(cipherAlgorithm);
            //使用密钥初始化,设置为解密模式
            cipher.init(Cipher.DECRYPT_MODE, key);
            //执行操作
            CipherInputStream cis = new CipherInputStream(new FileInputStream(file), cipher);
            return cis;
        }
    }
    展开全文
  • BASE64加密图片字符串转码

    前段自己遇到了BASE64图片字符串加密转码相关的问题,网上一搜,貌似都差不多,但是有的却是不能使用,要么导入jar有问题,要么就是导入路径不存在,也搜索了半天,总算是解决了,现在贴出代码,方便自己以后使用,也方便他人,虽然自己是小菜菜,但是我还在路上呢嘛,贴上代码。

    参数为Bitmap:

    /* ~ BASE64 转码****** */
    public static String toBase64Encode(Bitmap msg) {
    
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    msg.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte b [] = baos.toByteArray();
    
    return Base64.encodeToString(b, Base64.DEFAULT);
    
    }
    
    参数为String:
    /* ~ BASE64 转码****** */
    public static String toBase64Encode(String msg) {
    
    return Base64.encodeToString(msg.getBytes(), Base64.DEFAULT);
    
    }


    /* ~ BASE64 解码****** */
    public static String toBase65Decode(String msg) {
    /* ~ base64解析******** */
    byte[] msgCode = Base64.decode(msg, Base64.DEFAULT);
    String content = new String(msgCode);
    return content;
    
    }
    顺便加上获取后缀名的,当然还有对后缀名判断的,工程在家里,有时间考上

    /**
    * 
    * 获取后缀名
    * 
    * //img_path.lastIndexOf(".")返回最后一次出现的.在此字符串中的索引。
    * //img_path.substring(img_path.lastIndexOf(".") + 1)返回一个新的字符串 //trim()清空空格
    * //toLowerCase()转化成小写
    * 
    * @参数: @param img_path
    * @参数: @return
    * @return String
    * @throws
    */
    public static String getPicSuffix(String img_path) {
    if (img_path == null || img_path.indexOf(".") == -1) {
    return ""; // 如果图片地址为null或者地址中没有"."就返回""
    }
    return img_path.substring(img_path.lastIndexOf(".") + 1).trim()
    .toLowerCase();
    }




    展开全文
  • python凯撒加密图片

    2020-06-23 10:31:28
    欢迎加入我们卧虎藏龙的python讨论qq群:729683466之前有朋友在群里问凯撒密码询问如何用凯撒密码加密文件几天,就用图片加密给大家演示一下如何给图像进行加密对图像的每个像素点进...

    欢迎加入我们卧虎藏龙的python讨论qq群:729683466

    之前有朋友在群里问凯撒密码

    询问如何用凯撒密码加密文件

    几天,就用图片加密给大家演示一下

    如何给图像进行加密

    对图像的每个像素点进行数学处理

    快来看看吧

     1:关注“python趣味爱好者”公众号,回复“图片加密”获取源代码

    2:加入群聊:729683466。在群文件中下载源代码以及相关资料。

    设置的加密权值较小,还是可以看出来,加密权值大一点就不会有这种情况

    python3.6.4

    pygame,PIL

    __main__用法大揭秘

    python《赤龙戏珠》小游戏

    先讲一讲原理吧!大家都知道,对图像进行加密,就是对图片的像素点读取出来,组成一个序列,然后得到了数字以后,就是我们的强项了。

    彩色图片是三维数组,我们的原理就是,像素点的范围是0--255。我们根据密码,将像素点的数字大小增大。

    而我们的密码是输入的各种字符,转化为ASCII码,然后等比例乘密码强度,然后才是真正的可以使用的密码。

    其中ord函数就是将字符转化为ASCII码

    我举一个加密的例子

    一个明文[23,65,7,3,45,69,123,45,65]

    密码是[3,7,5]

    那么加密后暗文应该是[23+3,65+7,7+5,3+3,45+7,......]。

    解密的时候相反,将+变成-就行了。

    这时候,有的同学可能会问,如果加密后的数字大于255怎么办。

    其实很简单,如果加密后的数字是295.那么我们就去255的余数。295%255=45。

    然后把45存储到新的列表里面就行。

    这样以后,你的图片甚至可以转化为txt文件,用数字字符存储起来。

    如果以后需要转化为图片,可以用python读取这些字符。

    下面看一看加密后的数组如何转化为图片。

    很简单,只需要三行代码,不但可以显示图片,还可以存储起来。

    im3=Image.fromarray(np.uint8(new_array))
    im3.show()
    im3.save('flag.jpg')
    

    new_array就是我们加密过的图片

    flag.jpg就是我们要保存的图片。

    话说

    当然,如果仅仅是会加密是肯定不行的

    不过我相信,咱们的小伙伴那么聪明

    肯定有解密的方法,也知道如何拓展

    比如说,视频就是由一帧一帧图片组成的

    我们知道了原理

    当然也可以对视频进行加密。

    作者|齐

    编辑|齐

    感谢大家观看

    有钱的老板可打赏一下小编哦

    图片来源:《虹猫蓝兔七侠传》

    展开全文
  • Base64和BASE64Encoder加密图片的区别

    千次阅读 2019-03-06 21:52:23
    BASE64Encoder是一种加密 Base64是一种编码 使用BASE64Encoder加密(不建议使用) 使用Base64加密图片(推荐使用)
  • 微信加密图片破解

    千次阅读 2019-07-01 10:29:27
    使用十六进制文档阅读器打开,与jpg格式的图片做异或得到自己的加密值; import os out_path=r"D:/image" index = 1 def imageDecode(f,fn): global index dat_read = open(f, "rb") # out='P:\\'+fn+".png" ...
  • PC版微信加密图片解密思路与代码实现_Python 前言 PC版的微信会加密存储用户接受到的所有图片信息。 存储路径为 C:\Users\用户名\Documents\WeChat Files\微信号\FileStorage\Image\xxxx-xx 存储的文件均为DAT格式。...
  • 这个问题是在加密图片,存入sd卡,在解密出来展示,出现的。我个人研究了很久没解决。最后经过高人指点,终于解决了。 在此,拿出来分享,希望各位少走弯路。 我之前的设计思路是:(可以不看哦) 1.把图片从...
  • 【Cococs2d-x】通过TexturePacker加密图片资源(Cocos2d-x方式)  分类:  cocos2d-x2013-05-17 10:041056人阅读评论(0)收藏举报 Cocos2d-x图片游戏加密解密 目录(?)[+] TexturePacker加密策略设置 ...
  • js获取Blob加密图片url

    千次阅读 2018-01-25 15:02:54
    原文链接:... 1)使用 XMLHttpRequest 对象获取图片url的Blob值 //获取图片的Blob值 function getImageBlob(url, cb) { var xhr = new XMLHttpRequest(); xhr.open(
  • 改变base64加密图片的大小

    千次阅读 2019-10-30 15:16:27
    1、添加依赖 <!-- 图片缩略图 --> <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>...
  • 有些时候 项目会有一些对图片处理的要求 例如在本地图片不是一个 可以直接看的jpg图片 但是在项目中读取出来 经过解密 会显示出的图片 我们的项目 就有一个这样的要求 用objc的NSData读取,读取后转换成...
  • 下面是图片上传的逻辑: import java.io.UnsupportedEncodingException; import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.Base64Utils; ...
  • 1.用到base64加密肯定也要进行解密。所以我们创建一个工具类! 2.copy之后new BASE64Encoder(); 会报错,原因是我们这里导入的是import sun.misc.BASE64Decoder;和 import sun.misc.BASE64Encoder; 这里会找不到...
  • 它被称为ContentProtection,即图片加密。但目前官方只支持Cocos2d-iphone的解密.TexturePacker作者说,不久Cocos2d-x也将集成解密功能.代码已经提交Cocos2d-x github官方库.(文章内容复制泰然论坛TexturePacker ...
  • 它被称为ContentProtection,即图片加密。但目前官方只支持Cocos2d-iphone的解密.TexturePacker作者说,不久Cocos2d-x也将集成解密功能.代码已经提交Cocos2d-x github官方库.(文章内容复制泰然论坛TexturePacker ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 140,263
精华内容 56,105
关键字:

如何加密图片