Puoi creare un indice UNICO su una colonna BLOB, devi semplicemente specificare una lunghezza massima per l'indice (il che significa anche che sarà univoco solo fino a quel numero di caratteri).
Considera, tuttavia, l'utilizzo di VARBINARY che ti consente di correggere la lunghezza e significa che non puoi inserire un campo più lungo che potrebbe rompere accidentalmente il vincolo univoco. Vedi https://dev.mysql.com/doc/ refman/5.6/en/binary-varbinary.html
Esempio, testato il 5.6.23:
mysql [localhost] {msandbox} (test) > create table t1 (a BLOB(16), UNIQUE INDEX `a`(`a`(16)));
Query OK, 0 rows affected (0.01 sec)
mysql [localhost] {msandbox} (test) > insert into t1 values('aaa');
Query OK, 1 row affected (0.01 sec)
mysql [localhost] {msandbox} (test) > insert into t1 values('aaa');
ERROR 1062 (23000): Duplicate entry 'aaa' for key 'a'
mysql [localhost] {msandbox} (test) >
mysql [localhost] {msandbox} (test) > create table t2(a VARBINARY(16), UNIQUE INDEX `a`(`a`));
Query OK, 0 rows affected (0.02 sec)